记一次java应用内存占用分析

目标:分析应用哪个类创建的对象实例数最多。

首先登录应用所在服务器,采用jps命令查询应用的进程id:


记一次java应用内存占用分析_第1张图片
8.png

查到java进程id为13830,然后采用jmap命令dump出进程当前内存的情况:

记一次java应用内存占用分析_第2张图片
9.png

该命令把进程的内存对象占用情况dump到heap文件中,接下来通过jhat命令来分析该heap文件。

记一次java应用内存占用分析_第3张图片
10.png

jhat命令会在7000端口启动一个服务,通过网页可以访问各个对象的内存占用情况:

记一次java应用内存占用分析_第4张图片
1.png

在该默认界面的最下面找到如下栏目:

记一次java应用内存占用分析_第5张图片
2.png

点击Show instance counts for all classes,进入如下界面:

记一次java应用内存占用分析_第6张图片
3.png

该界面显示了所有class的实例个数,由图可知,AtomicLong这个类的实例数量最多,点击该实例,进入如下界面:

记一次java应用内存占用分析_第7张图片
4.png

在该实例的界面找到上图箭头所示链接,查看该类的引用关系统计,如下:

记一次java应用内存占用分析_第8张图片
5.png

在Referrers by Type列表中找到最多的引用该类的类:

记一次java应用内存占用分析_第9张图片
6.png

你可能感兴趣的:(记一次java应用内存占用分析)