1、 下载项目中对应的JDK版本。

2、 执行tar -xf jdk-8u262-linux-suse-x64.tar.gz解压jdk。

3、 查找ps命令查找微服务进程ID。

4、 执行./jdk1.8.0_262/bin/jmap -dump:live,format=b,file=dump_memory.bin 1487620命令导出堆内存(dump_memory.bin为导出文件名称,1487620为进程ID号)ps:此处需要注意项目执行的权限。

5、 命令执行完成后,会在/home/ossuser目录下生成堆内存文件dump_memory.bin,并下载到本地机器(安全PC)。

6、 通过https://www.eclipse.org/mat/downloads.php下载MemoryAnalyzer软件。

9、 在本地机器上运行MemoryAnalyzer软件,并通过该软件打开dump_memory.bin文件。MemoryAnalyzer会解析内存数据,耗时预计会有几分钟。

10、内存分析完成后,会提示Memory Leak分析,也可以通过Reports -> Leak Suspects查看内存占用比较大的对象。

valgrind 检查java应用内存泄漏 java内存泄露怎么查_java如何定位内存泄露的代码

11、系统会按照对象占用大小进行排序,如下图:

valgrind 检查java应用内存泄漏 java内存泄露怎么查_java如何定位内存泄露的代码_02

12、点击Problem Suspect 1中的Details信息查看内存占用,找到内存占用比较大的类,再根据代码确认内存占用是否合理。