java CMS gc日志中“真实”,“用户”和“sys”的含义是什么?

时间:2012-11-09 15:55:40

标签: java garbage-collection jvm

对于以下Java版本:

OpenJDK版“1.6.0”
OpenJDK运行时环境(版本1.6.0-b23)
OpenJDK 64位服务器VM(内置20.0-b11,混合模式)

使用以下GC标记:

-verbose:GC
-XX:+ UseConcMarkSweepGC
-XX:+ CMSClassUnloadingEnabled
-XX:+ PrintGCDetails
-XX:+ PrintGCDateStamps

我们得到的日志行如下:

  

2012-11-09T16:46:53.438-0100:[CMS-concurrent-mark:4.039 / 4.060 secs]   [时间:用户= 4.09 sys = 35.05,真实= 4.06秒]

初始的“4.039 / 4.060秒”应根据https://blogs.oracle.com/poonam/entry/understanding_cms_gc_logs表示并发标记总共需要4.039秒的cpu时间和4.060秒的挂起时间(包括其他线程的收益)。

但是用户,系统和实际值在这里意味着什么?

1 个答案:

答案 0 :(得分:5)

  1. sys和user是唯一的CPU时间。因此,它们不包括进程被CPU阻止或正在进行I / O等的时间。

  2. GC时间通常应与sys +用户时间相似,但如果进程被阻止或等待则会更高。对于串行收集器和单个处理器盒,情况确实如此。但是,在多处理器环境(使用并行收集器)中,GC时间将小于sys +用户时间,因为有多个CPU。

  3. 实时与GC时间相似。