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

for*_*all 11 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,real = 4.06 secs]

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

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

Kha*_*111 5

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

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

  3. 实时时间与GC时间相似.