网易首页 > 网易号 > 正文 申请入驻

排查Java内存泄露实战(内附各种排查工具介绍)

0
分享至

今天刚刚才加一个故障review会议, 故障非常典型, google下也可以找到相似案例介绍。 在排查问题的过程中,使用了大量的工具, 发现有问题的地方还不只一个,总结一下. (本篇文章不会重点描述案例本身,重点会介绍个人对java内存泄露问题的排查思路和各种工具的使用)。

java内存泄露典型特征

现象一:堆/Perm 区不断增长, 没有下降趋势(回收速度赶不上增长速度), 最后不断触发FullGC, 甚至crash(如下两张图是同一个应用的GC和Perm数据, GC触发原因确认是Perm不足). 一般是现象二的晚期表现。

现象二:每次FullGC后, 堆/Perm 区在慢慢的增长, 最后不断触发FullGC, 甚至crash(如下图: 示意图)

java内存泄露场景---PermGen space

原因:说明Perm不足. Perm存放class,method相关对象,以及运行时常量对象. 如果一个应用加载了大量的class, 那么Perm区存储的信息一般会比较大.另外大量的intern String对象也会导致Perm区不断增长。此区域大小由-XX:MaxPermSize参数进行设置. (jdk8相关参数已经改变, 这里不讨论)

案例: Groovy动态编译class, xstream String.intern

本质原因:ClassLoader.defineClass和java.lang.String.intern在大量不适宜的场景被调用.

解决方案:

方案1(直接有效): 使用btrace相关工具输出调用ClassLoader.defineClass栈信息, 从栈信息来追溯问题. (代码如下图). 但Btrace 不能trace jvm native方法(官方release btrace 1.3.1中版本声明可以trace native方法, 但尝试无效。如果你清楚如何使用,麻烦告知一下,谢谢)。

用JProfiler来trace String.intern方法栈

方案2: dump heap, 看看哪些class有异常现象(数量), String被Perm区引用的对象信息等.但这种方式不太直观,可以从String数据看看发现可疑问题,没有方案1直观。(如下图: 如果能在日常调试推荐JProfiler)

方案3: 增加-XX:+TraceClassLoading和-XX:+TraceClassUnloading, 看看哪些class加载了,哪些class卸载了. 如果一些特殊的class一直被加载而没有被卸载说明也是有问题的。(如下图)

方案4:执行jmap -permgen(jstat -gcutil 可以查看内存增长速度和区域)命令看看Perm区中的内容, 初步确定是否存在问题 (如下图)

java内存泄露场景---Java heap space

原因:长生命周期的对象引用了短生命周期(应该尽快GC回收掉)的对象,最后造成一个对象已经不能在堆区分配足够空间. 注: 这种现象不能完全肯定是内存泄露, 比如: heap本身的设置的过小.

案例: 我个人没有遇到过这种案例, 但模拟过这种情形的Demo: 参考我的《深入浅出JProfiler》文章, 也学习过其他同学的案例: 例如:参数过大并且频繁超时导致内存泄露

解决方案:

  1. 触发FullGC, dump live heap. 标记堆中对象数量, 重点关注可疑对象
  2. 触发FullGC, dump live heap. 标记堆中对象数量, 重点关注可疑对象
  3. 对比步骤1和步骤2 相同对象的数量和大小, 找出可疑对象一一进行排查确认。
  4. 如果步骤3依然无法明确有问题的对象, 那就多执行几次步骤1和步骤2。在此过程中可以调整GC触发时间, 模拟真实的故障场景 :)
  5. 看看GC后堆的大小是否增长, 如果没有不断增长, 并且持续一段较长时间, 那基本正常。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
温州市公安局原副局长徐志宏,主动投案

温州市公安局原副局长徐志宏,主动投案

大风新闻
2026-06-01 21:37:00
释永信害惨四位女星:央视台柱、乐坛歌后、刘涛最冤

释永信害惨四位女星:央视台柱、乐坛歌后、刘涛最冤

暖心萌阿菇凉
2026-05-31 18:11:11
奇迹啊!广东11岁男童在深山走失13天后,在离家8公里远的密林山坳中被平安找到…

奇迹啊!广东11岁男童在深山走失13天后,在离家8公里远的密林山坳中被平安找到…

广东活动
2026-06-02 12:11:58
武汉一日资汽配厂6月1日正式关闭,工人们却笑着说“够意思”

武汉一日资汽配厂6月1日正式关闭,工人们却笑着说“够意思”

捣蛋窝
2026-06-02 11:26:01
2-0击败强敌,19岁俄罗斯新锐强势晋级法网女单四强,追平最佳战绩

2-0击败强敌,19岁俄罗斯新锐强势晋级法网女单四强,追平最佳战绩

侧身凌空斩
2026-06-02 18:20:57
给钱我都不坐!多名特斯拉前员工坦言:马斯克吹的FSD根本不安全

给钱我都不坐!多名特斯拉前员工坦言:马斯克吹的FSD根本不安全

快科技
2026-05-31 14:09:06
董旭斌任浙江省国资委党委书记、主任

董旭斌任浙江省国资委党委书记、主任

中国经济网
2026-06-02 15:10:41
你最接近生理极限的一次经历是什么?网友分享让人目瞪口呆!

你最接近生理极限的一次经历是什么?网友分享让人目瞪口呆!

夜深爱杂谈
2026-04-09 19:39:13
伊朗媒体新发布最高领袖穆杰塔巴·哈梅内伊照片

伊朗媒体新发布最高领袖穆杰塔巴·哈梅内伊照片

环球网资讯
2026-06-02 11:52:10
荷兰没料到,闯中国领空这事没完,中方当各国面,让荷兰下不来台

荷兰没料到,闯中国领空这事没完,中方当各国面,让荷兰下不来台

共工之锚
2026-06-01 13:17:56
冶金院校毕业!他,拟任北京一区委书记

冶金院校毕业!他,拟任北京一区委书记

新浪财经
2026-06-02 16:32:05
女老师上课汗流浃背,博主感叹老师不容易,反遭全网谩骂、泼冷水

女老师上课汗流浃背,博主感叹老师不容易,反遭全网谩骂、泼冷水

谭谈社会
2026-06-01 17:39:07
赛豆汽车正式成立,首款车曝光!

赛豆汽车正式成立,首款车曝光!

电动内参
2026-06-01 23:51:46
禁止所有中国外交官入境,不准两岸统一,这个国家比美国还嚣张?

禁止所有中国外交官入境,不准两岸统一,这个国家比美国还嚣张?

傲傲讲历史
2026-06-02 13:53:16
王丽娟任辽宁省广播电视局党组书记、局长

王丽娟任辽宁省广播电视局党组书记、局长

中国经济网
2026-06-02 11:16:05
单次注射,低密度脂蛋白直降62%!NEJM最新:打一针管18个月,降脂治疗迎来"颠覆性时刻"

单次注射,低密度脂蛋白直降62%!NEJM最新:打一针管18个月,降脂治疗迎来"颠覆性时刻"

梅斯医学
2026-06-02 08:36:10
日本正式加入北约援乌PURL计划,俄罗斯被联大纳入冲突暴力黑名单

日本正式加入北约援乌PURL计划,俄罗斯被联大纳入冲突暴力黑名单

史政先锋
2026-05-30 20:55:28
菲戈:不能拿姆巴佩和C罗比较

菲戈:不能拿姆巴佩和C罗比较

懂球帝
2026-06-02 12:28:06
美媒:中国逻辑折叠技术一旦被国际掌握,ASML将首当其冲

美媒:中国逻辑折叠技术一旦被国际掌握,ASML将首当其冲

赵钇是个热血青年
2026-06-02 12:59:12
善恶终有报!放弃国籍、贬低中国,68岁瘫在轮椅的张铁林活成笑话

善恶终有报!放弃国籍、贬低中国,68岁瘫在轮椅的张铁林活成笑话

混沌录
2026-06-01 23:24:09
2026-06-02 19:59:00
测试帮日记
测试帮日记
将技术娱乐化
275文章数 706关注度
往期回顾 全部

科技要闻

烧掉千亿后,美团、阿里、京东谁先止血?

头条要闻

小学教师疑因打井纠纷杀害邻居 死者留下两未成年儿子

头条要闻

小学教师疑因打井纠纷杀害邻居 死者留下两未成年儿子

体育要闻

1米74的业余联赛替补,在英超踢中卫

娱乐要闻

奚梦瑶何猷君补办婚礼超幸福

财经要闻

智元和宇树的“暗战”愈演愈烈

汽车要闻

星途神秘新车轮廓曝光 又一款性能SUV要来了?

态度原创

教育
时尚
数码
旅游
军事航空

教育要闻

别等孩子哭着抗拒上学才后悔,幼小衔接必须做好这些准备

推广|| 入夏第一双鞋买得好成功!暴走1w步、搭遍小裙子

数码要闻

华为nova 16系列发布:2999元起 全系配备后置红枫原色镜头

旅游要闻

高德与新加坡旅游局战略合作,飞行街景技术首次落地海外

军事要闻

伊朗媒体新发布最高领袖照片

无障碍浏览 进入关怀版