JVM调优流程
2020-06-22 11:24:23 0 举报
JVM调优流程
作者其他创作
大纲/内容
否
并行处理 -XX:ParallelRefProcEnabled
不好定位问题
是
排查时间长的原因
检查集合中对象是否持续增长
是否有长生命周期的集合类
Concurrent Mode Failure
关闭显式GC调用 -XX:disabledExplicitGC
检查initial-mark和remark阶段暂停时间是否在预期范围
检查N次old区GC后的堆大小是否呈线性增长
Minor GC执行时间不到50ms; Minor GC执行不频繁,约10秒一次; Full GC执行时间不到1s; Full GC执行频率不算频繁,不低于10分钟1次;
拿到CMS GC Log
是否有Fail关键字
检查缓存中对象是否持续查长
检查池中对象是否持续增长
调用了System.gc
1、扩大Young区大小2、扩大整个堆大小3、应用负荷太大,考虑分拆
是否是ClassUrlLoading耗时太长
Perm区满了
扩大Perm区,并去掉ClassUrlLoading(空间换时间)-XX:-CMSClassUnloadingEnabled
YoungGC暂停时间是否在合理范围?
1、增加整个堆大小2、缩小Young区,增加old大小3、缩小触发old区gc时的堆占用
Promotion Fail
是否有池化对象
1、减小整个堆2、减小触发old区GC 时使用比例
检查缓存中对象是否持续增长
是否是Ref Proc耗时太长
使用Java mission control监控应用。对堆进行快照对比,检查增量对象
堆太大
1、调大Perm区2、设置初始大小和最大值相同,避免动态调整
1、缩小Young区大小2、缩小整个堆大小
排查原因
增加堆大小,推迟出现时间能否接受?
排查可能是内存泄露
检查忙时YoungGC频率是否合理?
是否有Full GC
此问题无解1、考虑定期重启应用2、使用G1
Jmap -histe <pid>使用Jmap打印堆中对象数,发现可疑对象
0 条评论
回复 删除
下一页