首页 > 技术文章 > 利用JProfile 7分析内存OOM

TLightSky 2014-04-17 02:32 原文

今天发现一个OOM问题,想来可能是有部分内存没有正确释放导致的

于是想到了之前使用的JProfile来分析一下

 

由于大概知道哪个类没有释放,可以在Memory Views里看一下对应的类有多少实例来确实一下猜想。

然后为了分析这个类被哪些其他地方hold住,需要具体进行分析:

1 在Memory Views里面对相应的类右击,选择Show Selection In Heap Walker。

2 切换到References页面,选择Incoming references,这时候就可以看到到底有哪些类hold住了所分析的类。

 

分析的时候注意,有些被内部的对象hold住的情况可以不用理会,因为这种循环引用还是会被垃圾回收的。

 

具体到今天分析的结果,发现是启用了一个Timer后未及时关闭,导致相关类无法被及时回收。

在不需要的时候关闭Timer即可。

推荐阅读