了解Java GC日志

时间:2009-12-02 15:09:47

标签: java garbage-collection logging

我在我的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 +用户与实际时间有什么区别?
  2. “0.023 / 0.024秒”是什么意思?

2 个答案:

答案 0 :(得分:3)

我认为这与CPU使用率有关..

  1. 真实是结束和开始之间的绝对时间差(不包括上下文切换)
  2. user 是在用户空间中执行代码所花费的时间
  3. sys 是指在执行系统代码时花费了多少时间(例如系统调用或其他将控制权从用户代码转移到内核代码的内容)
  4. 注意:虽然真实的并不代表有效时间(因为还包括GC离开CPU以让它变为其他东西的时间) sys + user 确实。

    修改

    CMS-concurrent-sweep是GC实际清除无用对象的阶段(在标记阶段之后完成)。在这种情况下,它是并发的,因为GC与应用程序一起工作而不会暂停它,时间应该是时间使用(可能time-start / time-end,不确定)

答案 1 :(得分:1)

根据http://www.sun.com/bigadmin/content/submitted/cms_gc_logs.html,两个数字0.023/0.024是CPU /墙上时间。