目标:分析应用哪个类创建的对象实例数最多。
首先登录应用所在服务器,采用jps命令查询应用的进程id:
![](https://img.haomeiwen.com/i3751588/c552860f7203b32c.png)
查到java进程id为13830,然后采用jmap命令dump出进程当前内存的情况:
![](https://img.haomeiwen.com/i3751588/db872f6bb71d671d.png)
该命令把进程的内存对象占用情况dump到heap文件中,接下来通过jhat命令来分析该heap文件。
![](https://img.haomeiwen.com/i3751588/57035d952ba04bef.png)
jhat命令会在7000端口启动一个服务,通过网页可以访问各个对象的内存占用情况:
![](https://img.haomeiwen.com/i3751588/27a2e35c95803cfb.png)
在该默认界面的最下面找到如下栏目:
![](https://img.haomeiwen.com/i3751588/3ff1a3911bd45dbc.png)
点击Show instance counts for all classes,进入如下界面:
![](https://img.haomeiwen.com/i3751588/5a7638104a55a3fe.png)
该界面显示了所有class的实例个数,由图可知,AtomicLong这个类的实例数量最多,点击该实例,进入如下界面:
![](https://img.haomeiwen.com/i3751588/3a7670c29d84116a.png)
在该实例的界面找到上图箭头所示链接,查看该类的引用关系统计,如下:
![](https://img.haomeiwen.com/i3751588/72a10223756bae35.png)
在Referrers by Type列表中找到最多的引用该类的类:
![](https://img.haomeiwen.com/i3751588/27c747456b5fbec9.png)
网友评论