识别并解决Java垃圾回收问题
Last updated on
在 Java 开发中,开发人员是无需过度关注对象的回收与释放的,JVM 的垃圾回收机制可以减轻不少工作量。但完全交由 JVM 回收对象,也会增加回收性能的不确定性。在一些业务场景下,不合适的垃圾回收算法以及策略,都有可能导致系统性能下降甚至线上故障。
通过在线Demo)故障注入平台,注入例如
增加POD FullGC频率
故障来模拟真实环境中产生的垃圾回收问题。
本指南将展示如何使用Kindling-OriginX如何快速识别并解决Java中的垃圾回收造成的故障问题,并与目前处理垃圾回收问题的常用方法做一简单对比。
传统方式
由于垃圾回收引起的故障或性能问题的故障表征多样,可能表现为CPU飙高、内存OOM、请求响应超时、应用假死等等,传统方式中需要先能够确定出是垃圾回收导致的问题,再通过相关命令、分析GC日志、相关工具辅助等方法继续深入查找根因。
通过相关命令信息分析
线上故障一般主要是CPU、磁盘、内存以及网络问题,基本上出问题后就是df、free、top三连,之后再结合jstack、jmap深入分析,但操作步骤与命令繁多,极易出错,同时经常需要在各个环境和文件中来回切换,容易丢失上下文。这种方式适用多种场景,但对人员要求高且操作复杂。