我正在使用 jstat 来获取GC操作的总累计时间,即 GCT
因此,假设GCT为2秒,我的JVM进程已经运行了60秒,我在四核服务器上运行,所以我的GC百分比是多少?
2 / 60 * 4 = 0.83%
以上的计算是否正确?
我正在使用 jstat 来获取GC操作的总累计时间,即 GCT
因此,假设GCT为2秒,我的JVM进程已经运行了60秒,我在四核服务器上运行,所以我的GC百分比是多少?
2 / 60 * 4 = 0.83%
以上的计算是否正确?
-XX:+PrintGCApplicationConcurrentTime
-XX:+PrintGCApplicationStoppedTime
Application time: 3.3319318 seconds
Total time for which application threads were stopped: 0.7876304 seconds
Application time: 2.1039898 seconds
Total time for which application threads were stopped: 0.4100732 seconds
不,实际上并不是这样的。您的计算假定java进程在整个时间内对所有4个核心的利用率达到了100%。
正确的计算方法是(逻辑处理所花费的时间) / (垃圾回收所花费的时间)
,但通常需要使用分析器来获取第一个信息片段。
( CPU spent on GC ) / ( total CPU spent on JVM)
打印GCDetails - 这个选项可能会很有帮助。它会打印每次垃圾回收的信息。
[GC
[PSYoungGen: 99952K->14688K(109312K)]
422212K->341136K(764672K), 0.0631991 secs]
[Times: user=0.83 sys=0.00, real=0.06 secs]
PrintGCDetails
,但它只告诉我垃圾回收时间,我想知道百分比以进行比较。 - Ryan