"总垃圾收集时间"可以通过观察命令打印的GCT列来确定:
jstat -gc <pid>
如下所述:https://docs.oracle.com/en/java/javase/12/tools/jstat.html
自Java过程启动以来,这似乎是花费大量的时间。
这是每个核心吗?因此,如果单个JVM实例完全利用了四核CPU 100秒,并且垃圾收集了10%的时间,GCT会报告10或40吗?如果我启用了超线程(即8个OS内核(,那么我应该如何理解GCT图?
我正在使用OpenJDK12热点JVM。
GCT
公制是特定于收集器的。每种GC算法都可以定义GCT
的含义。
通常是在 stop-the-world gc暂停中花费的总计 wall时钟时间。特别是,对于G1,openjdk 12中的默认收集器,GCT
是全GC暂停的总和。
但是,对于Shenandoah GC GCT
,还包括并发的GC时间。无论哪种情况,GCT
均以绝对(壁时钟(计时器进行测量,而与线程数或CPU内核无关。