【问题标题】:Understanding Java's GC logs了解 Java 的 GC 日志
【发布时间】:2009-12-02 15:09:47
【问题描述】:

我在我的 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 time 有什么区别?
  2. “0.023/0.024 秒”是什么意思?

【问题讨论】:

标签: java garbage-collection logging


【解决方案1】:

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

  1. real 是结束和开始之间的绝对时间差(不包括上下文切换)
  2. user 是在用户空间执行代码所花费的时间
  3. sys 是在执行系统代码(例如系统调用或将控制权从用户代码转移到内核代码的所有其他操作)时花费了多少时间

注意:虽然 real 不代表有效时间(因为还包括 GC 离开 CPU 让其转移到其他地方的时间)sys+user 会。

编辑

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

【讨论】:

  • 你知道 GC 名字旁边的两个数字代表什么吗?
  • 你到底在说哪里?哪些数字?
【解决方案2】:

根据http://www.sun.com/bigadmin/content/submitted/cms_gc_logs.html0.023/0.024 这两个数字是 CPU/wall 时间。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-22
    • 2013-10-28
    • 1970-01-01
    相关资源
    最近更新 更多