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查看内存占用比较大的对象。
11、系统会按照对象占用大小进行排序,如下图:
12、点击Problem Suspect 1中的Details信息查看内存占用,找到内存占用比较大的类,再根据代码确认内存占用是否合理。