打断gcroot中任何一个链条,释放对象引用
5. 总结
总结一下,内存泄露问题分析,有固定的方法和指令,过程需要大家深入理解,同时熟悉代码非常重要,因为需要找出gcroot,分析出内存泄露的原因,再进行修改解决。
大的套路:
描述问题背景和现象
确定问题是否是内存泄露
梳理问题分析思路
动手分析解决
总结
详细的分析步骤:
多核CPU情况下,分析每个GC托管堆的大小 !eeheap –gc
查询内存中各类对象的总个数和总内存占用 !dumpheap –stat
查询内存中大对象的个数和对象大小 !dumpheap –stat -mt -min 5000 -max 100000
如果某一类或者几类对象的内存总占用很多,分析此类对象 !dumpheap –mt ***
多次采样查看步骤4中对象的gcroot !gcroot addr
打断gcroot中任何一个链条,释放对象引用
欢迎大家补充。