导出jvm的内存快照进行分析

查找对应的进程id(PID)

使用

tasklist | findstr javaw.exe

或者知道被占用的端口使用

netstat -nao | findstr “8080”

记下最后一个数字即PID,假如得到PID是3715

linux下使用

ps aux|grep java

或者知道端口号

lsof -i:8080

记下第一个数字就是PID (根据进程查看信息命令netstat -anop | grep PID)

然后使用如下命令

jmap -dump:format=b,file=E:\eclipse.hprof 3715

在E盘生成eclipse.hprof快照

或linux

jmap -dump:format=b,file=/usr/jdk/dump/elipse.hprof 3715

使用MAT分析内存快照

下载Memory Analyzer Tool独立版本地址

http://www.eclipse.org/mat/downloads.php

现在最新版本Memory Analyzer 1.9.0 Release

下载Stand-alone Eclipse RCP Applications下对应的版本(66.8MB)

解压后,打开MemoryAnalyzer.exe,File-Open Heap Dump…

选默认是内存泄漏报告,Finish

为了快速找到pid,也可以修改进程名为比较特殊好记的

1.windows下修改进程名称

打开apache-tomcat-8.5.32\bin\setclasspath.bat文件,找到

set _RUNJAVA="%JRE_HOME%\bin\java.exe"这一行。

将该行注释掉(rem),然后在该行下面添加如下两行并进行保存:

copy “%JAVA_HOME%\bin\java.exe” “%JAVA_HOME%\bin\new_java.exe”
set _RUNJAVA="%JAVA_HOME%\bin\new_java"

重启后,就能看到new_java这个新命名的进程了

2.linux下修改进程名称

打开apache-tomcat-8.5.32\bin\setclasspath.sh文件,找到

_RUNJAVA="$JRE_HOME"/bin/java

将该行注释掉(rem),然后在该行下面添加如下两行并进行保存:

cp “ J A V A H O M E / b i n / j a v a " " JAVA_HOME/bin/java" " JAVA_HOME/bin/new_java”
_RUNJAVA="$JRE_HOME/bin/new_java"

然后重启,使用

ps aux|grep new_java

就能找到进程信息了

发布了64 篇原创文章 · 获赞 34 · 访问量 10万+

猜你喜欢

转载自blog.csdn.net/svygh123/article/details/98233216