问题标签 [jstat]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - jstat 和 jcmd 对元空间内存给出不同的答案
我目前正在调查压缩类空间问题。我知道问题出在哪里,但在调查时,我注意到jstat -gc ...
并jcmd ... GC.heap_info
给出了不同数量的元空间和压缩类空间容量和使用情况:
堆容量的数字似乎大致匹配(幸存者、伊甸园和老一代的所有容量都同意)。堆使用数字不完全匹配,但我不希望它们匹配;jstat
在这里大约一秒钟后被收集jcm
。但是元空间数字全部关闭,jstat
数字通常略低于jcmd
数字。我重新运行了这两个命令以确认调用之间没有发生类加载,实际上,这两个命令都为元空间编号提供了与以前相同的输出。
这里发生了什么?他们测量这些数字的方式是否略有不同?哪个更准确?
运行时信息:
java - Java 本机内存跟踪堆提交的数量远远超过堆转储的总数
使用jdk1.8.0_152
我正在尝试追踪我的 java 程序的哪一部分使用的内存最多(主要在堆中)
使用top
我看到整个过程使用了大约 1.109G 的剩余内存
使用jcmd {PID} VM.native_memory
我看到总保留是 4704896 KB,提交是大约 1290820 KB。已提交的内存略多于剩余内存,但我读过并非所有已提交的内存都可以分页到实际内存,所以我不太担心这种差异
我现在主要关心的是我VM.native_memory
使用时堆内存使用量和总堆使用量之间的差异jcmd {PID} GC.class_histogram
我还尝试比较使用的堆使用情况jstat -gc {PID}
,得到的结果类似于GC.class_histogram
根据GC.class_histogram
and jstat -gc
,堆使用量约为 250MB,但使用VM.native_memory
堆使用量(在该Java Heap
部分中提交)约为 1000000KB(略小于 1GB),但实际 RSS 内存似乎更接近于VM.native_memory
我现在的猜测是VM.native_memory
Java Heap 包含尚未被垃圾收集的内存,但即使我运行垃圾收集,我看到jstat -gc
急剧减少的结果VM.native_memory
完全没有受到影响(尽管我听说用户手动调用垃圾收集不会总是导致完整的垃圾收集,但似乎至少这jstat -gc
似乎与GC.class_histogram
.
我听说的另一件事是,top
当使用内存的进程释放它时,并不总是释放剩余内存,直到绝对需要释放该内存。
所以总结一下
- 为什么显示与和
VM.native_memory
不同的堆内存使用情况?jstat
GC.class_histogram
- 我应该使用哪个指标来确定我的 java 进程正在使用多少内存?(考虑到剩余内存
top
可能并不总是反映实际使用情况)
java - G1 GC 中的 Full GC
Jstat 工具提供有关年轻 gc 时间和完整 gc 时间的统计信息以及其他信息。据我所知,G1 GC 中的 Full GC 包括以下阶段:
1)并发标记(不是停止世界)
2) Remarking(停止世界)
3) 空域回收(Stop the world)
4)通过混合gc回收部分空的旧区域(随着时间的推移而发生)
现在,我想知道 jstat full gc time 测量哪个阶段的时间?如果不考虑第 1 阶段和第 2 阶段的完整 gc 时间测量,那么与年轻 gc 相比,为什么完整 gc 时间更多?因为,只有第 2 阶段和第 3 阶段本身似乎是轻量级阶段。
此外,混合 gc 发生在接下来的几个年轻 gc 中。因此,在完整 gc 之后,年轻 gc 时间会增加接下来的几个年轻 gc。我这样假设是对的吗?
我刚刚开始学习 G1 GC 的工作
java - NMT 类已提交与 Jstat 压缩类空间
我正在调查 OutOfMemoryError: Compressed Class Space 问题。我认为,我找到了它的根本原因和解决方案(由 Hibernate Validator 方法调用的 JAXBContext.newInstance():在用户提交的每个操作之后 buildValidatorFactory),但在我的研究中,我注意到一件令人困惑的事情。
我尝试运行 jcmd VM.native_memory 和 jstat -gc 来跟踪类提交大小和 CCSU(压缩类空间使用):
和
我预计 NMT 中的“已提交类别”指标和 jstat 中的 CCSU 指标之间没有重大区别,但 jstat 显示的已用内存大约只有 1.72 MB,而已提交类别超过 24 MB。所以我生成了 GC.class_stats 统计数据,它显示 KlassBytes 大约是 1738616 B -> 1,739 MB - 所以它与 CCSU 中的 jstat 显示的值大致相同。我还发现其他元数据(如方法、常量等)占用了大约 14,44 MB(这与 mmap 中的值大致相同:committed=14720KB - 但我不知道这个数字是多少)。
那么剩下的部分在哪里呢?NMT 给出的数字到底是多少?
java - jstat : Survivor 和 Eden Space 容量在一段时间内减少
java(8) 内存容量是否会在 JVM 重新启动之前减少?
我正在使用 jstat -gc 转储内存信息,这是两天的快照。与第一个快照相比,第二个快照对 SC1 和 EC 的容量较小。
有人可以帮助/解释我为什么会看到这种行为吗?这是预期的吗?
java - jps、jstat、jstack 等命令显示“未找到”
我正在使用 OpenJDK 64 位服务器 VM(构建 25.275-b01,混合模式)在 Ubuntu 20.04 操作系统上运行 Tomcat 9。当我尝试使用 jstat、jstack 等收集诊断信息时,我看到PID未找到。jps 也无法识别 Tomcat 进程 ID。
我检查了几篇文章,例如one、two、three、four等,但这些文章中给出的答案都没有帮助我解决我的问题!
即使我传递了运行 Tomcat 进程的用户名,jstat 也找不到该进程:sudo -u tomcat jstat -gc 476174 5000
万一这很重要:
- 我可以看到 Tomcat 进程以
-Djava.io.tmpdir=/tmp
该文件夹由 root 用户拥有但启用了完全权限(777)启动。 - 当Tomcat进程启动时,我可以看到一个文件夹名称
systemd-private-e6d8b5dc224848f8a64a3e943ac2e9c4-tomcat9.service-UH5knj
(服务后的最后几个字符 - 每次重新启动进程时都会更改)以所有者身份创建(可能是因为我使用启动tomcat服务sudo service tomcat9 start
)并且该文件夹具有权限的rwx------
。
有关如何解决此问题的任何提示?
谢谢, 肖巴娜
java - 无法启动 jstat:无法为对象堆保留足够的空间
我有一个旧的 Jboss 服务器,有 5go 的 RAM。我的 java 应用程序是这样配置的:
当我尝试关闭时,它使用与启动相同的 JAVA_OPTS,所以它失败了。所以我修改了 shutdown.sh 脚本,并添加:
一切正常。但是现在,我的 JMX 统计数据不再起作用了,我假设他们使用 jstat 来测量空闲堆。
当我做一个:
我有消息:
但此时我的服务器上有 1go 的 RAM 可用!JAVA_OPTS jstat 使用什么工作?
javascript - 在 javascript 中寻找偏态正态分布(pdf、cdf 和 ppf)
我需要为 HTML/javascript 项目中的偏态正态分布实现 pdf(概率密度函数)、cdf(累积分布函数)和 ppf(百分比点函数或逆 cdf)。
由于jstat 库为许多其他发行版提供了此功能,我想我可能在这里遗漏了一些明显的东西,但是尽管我检查了所有发行版,但我找不到那里的偏斜法线。有谁知道一个 javascript 库,其中包含偏斜法线,或者可能使用 jstat 的工具创建它(尽管后者可能更像是一个数学问题)?
我知道我可以通过将正态分布 pdf 与互补误差函数(erfc) 相结合来获得 pdf,这很好,但对 cdf 或 ppf 没有太大帮助。
一个不错的近似也可以解决问题,它甚至不必特别准确,但它应该允许一系列不同的偏度和比例参数。我想如果一切都失败了,我可以尝试使用数值积分和类似的东西,但如果有人能帮助我找到更复杂的解决方案,我会很高兴,所以任何想法都会受到赞赏。
提前感谢,如果我忽略了一些东西,我很抱歉。我进行了很多搜索,但找不到解决方案,但我对 javascript 编程很陌生,对文档还不太熟悉。