java - 了解 Java 的 GC 日志

标签 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. 系统+用户和实时有什么区别?
  2. “0.023/0.024 秒”是什么意思?

最佳答案

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

  1. real是end和start的绝对时间差(不排除上下文切换)
  2. user 是在用户空间执行代码所花费的时间
  3. sys 是执行系统代码(例如系统调用或将控制权从用户代码移至内核代码的所有其他操作)花费的时间

注意:虽然 real 不代表有效时间(因为还包括 GC 离开 CPU 让它去别的地方的时间)sys+user 确实如此。

编辑

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

关于java - 了解 Java 的 GC 日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1833496/

相关文章:

java - 在 Activity 的 onDestroy() 中使用 Runtime.getRuntime().gc() 方法是一种好习惯吗?

java - 未处理的事件循环异常超出 GC 开销限制

php - 使用 md5 散列密码

logging - 记录 Laravel 中的操作和执行时间

javascript - 如何为 Splunk 日志手动设置时间戳?

java - ListView 中的重复条目

java - 同步对 ConcurrentMap 中给定键的访问

java - 简单的 Java Bank Atm 登录循环错误

java - OO设计-公共(public)API方法实现

.NET:大型堆对象何时被垃圾回收?