使用jdk自带工具
1、进入部署的应用,如linux服务器
2、使用下面命令格式化打印正在运行的java应用,获取目标应用的进程号PID
ps -ef | grep java | awk '{printf "User: %s, PID: %s, Command: %s\n", $1, $2, $8}'
注意:jhsdb命令是java 9后开始使用的,如果是java8使用jmap -heap 85
4、查找最耗内存的对象,会以表格的形式显示存活对象的信息,并按照所占内存大小排序
5、使用命令生成堆文件,文件会生成到当前命令执行所在的文件夹
jmap -dump:format=b,file=dumpfile.hprof pid 85
生成完名字为dumpfile.hprof的文件后,使用MemoryAnalyzer工具软件打开该文件,即可查看具体的内存占用情况
-vm 指定运行该软件的执行程序,不修改可能会有java版本不对的报错,导致软件无法运行
-Xmx为软件内存可以调大一点,通常内存堆栈文件比较大