java cpu激增_Java垃圾收集日志标准的激增

java cpu激增

众所周知,垃圾收集(GC)日志记录不是标准化的。 GC日志格式随您传递的JVM供应商,Java版本,GC算法和GC系统属性而异。 从Oracle到IBM,从Java 8到Java 9,从Serial到Shenandoah,甚至基于技术考虑,日志都不同。 基于这些排列和组合,已经有40多种不同的垃圾收集日志格式。

不同垃圾收集标准的挑战

如果您开发了用于解析GC日志的脚本,以提取某些统计信息,或者在GC时间超过特定阈值时触发警报,或者监视重复的Full GC事件,则必须自定义这些脚本以适应不同格式的GC日志。

由于有许多不同的GC日志格式,因此很难理解每种格式并有效地解释结果。 大多数格式没有任何文档或文献。 当然,这一点可以反驳:您可以使用复杂的GC日志分析工具,例如GCeasyHPJmeter

统一还是扩散?

当我们听到有关使用Java 9中的“ 统一JVM日志记录框架(JEP 158) ”重新实现GC日志的消息时,我们感到非常兴奋。 我们认为所有许多不同的垃圾收集日志都将合并为一种标准格式。 生活将会变得如此轻松。 不幸的是,事实并非如此。 相反,它最终创建了更多的日志格式 ! :-C

统一JVM日志记录框架的目标是为JVM的所有组件引入通用的日志记录系统。 具体来说,它意在统一编译器,垃圾回收,类加载器,元空间,svc,jfr等组件。 那么它是怎样工作的? 在每条日志行中,除旧版本的GC日志中存在的当前信息外,还将打印以下信息:

  1. 组件名称–编译器,GC,类加载器,元空间,svc,jfr
  2. 日志级别–跟踪,调试,信息,警告,错误
  3. 装饰–时间,正常运行时间,timemillis,uptimemillis,timenanos,uptimenanos,pid,tid

除了这些其他参数之外,垃圾收集日志语句的格式也已更改。 这是Java 8和Java 9之间的比较:

图1:Java 9统一GC日志记录框架中的G1 GC日志格式

图3:Java 9统一GC日志记录框架中的CMS GC日志格式

图4:Java 8中的CMS GC日志格式

因此,如果仔细观察图1,图2,图3和图4,您会发现Java 8和Java 9之间的垃圾收集日志发生了明显的变化。

但是同样,统一垃圾收集日志记录框架对简化已经很复杂的GC日志格式空间几乎无济于事。

结论

抱怨和批评任何实现都很容易。 但是,我们理解并尊重Oracle工程团队收到的迁移到JVM统一日志记录框架的任务。 由于它是JVM范围内的一项全球计划,因此GC日志记录陷入了这种复杂的情况。 对于这个复杂问题,我的个人解决方案是利用GCeasy或HPJmeter之类的工具来解析大多数格式的GC日志。 但是最后,只有整个社区都可以通过选择一种标准化方法来简化此问题。

翻译自: https://jaxenter.com/proliferation-caused-java-unified-gc-logging-138487.html

java cpu激增

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值