理解Java的GC日志

3
我在JDK上启用了详细的GC选项,现在我看到了像这样的行:
25.598: [CMS-concurrent-sweep-start]
25.622: [CMS-concurrent-sweep: 0.023/0.024 secs] [Times: user=0.02 sys=0.00, real=0.03 secs]
25.623: [CMS-concurrent-reset-start]
25.629: [CMS-concurrent-reset: 0.007/0.007 secs] [Times: user=0.01 sys=0.00, real=0.00 secs]

有人能告诉我那些参数的含义吗?

  1. sys+user和real times的区别是什么?
  2. "0.023/0.024秒"代表什么意思?

哪个jdk版本?我找到了这篇关于JDK5的文章,但是输出结果看起来不同(而且他们提到,输出结果会随着JDK版本的不同而变化)http://java.sun.com/docs/hotspot/gc5.0/gc_tuning_5.html - Andreas Dolk
2个回答

4
我认为这与CPU使用率有关。
  1. real 是结束时间和开始时间之间的绝对时间差(不包括上下文切换)。
  2. user 是在用户空间执行代码的时间。
  3. sys 是在执行系统代码时花费的时间(例如,系统调用或任何将控制从用户代码移动到内核代码的其他操作)。
注意:尽管 real 不代表有效时间(因为它还包括GC离开CPU让它去做其他事情的时间),但 sys+user 代表有效时间。
编辑: CMS-concurrent-sweep 是GC实际清理无用对象的阶段(在标记阶段之后完成)。在这种情况下,它是并发的,因为GC与应用程序一起工作而不中断它,并且时间应该是使用的时间(可能是 time-start / time-end,不确定)。

你知道 GC 名字旁边的两个数字代表什么吗? - ripper234
你具体在谈论什么?哪些数字? - Jack

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接