Loading

廉颇老矣,装个EclipseMemoryAnalyzer都能卡一小时

背景

大家好,我是逐日。最近运维反馈有个项目的内存有点高,怀疑是不是内存泄漏,我就让他给我dump了一下内存,准备用EclipseMemoryAnalyzer(MAT)分析下。

dump命令: jmap -dump:live,format=b,file=heap.bin 进程pid

mat下载

https://eclipse.dev/mat/download/

我是下载的windows版本。

然后解压即可,注意路径不要有中文和空格。

image-20260825163123325

报错

jdk21安装

image-20260825163221235

由于手里没有多模态模型,只能让豆包协助我了,我其实感觉豆包在多模态这块还不错,平时生活中有个啥搞不懂,拍个图就丢过去了。

豆包先怀疑是不是图里那个jar包不存在,那当然不至于,我甚至发现dbeaver也用了这个jar包:

image-20260825163532020

然后一开始查了下,说新版本的mat要jdk17至少,但我想着再确认下。

用jd-gui.exe反编译了一下,发现有这个Main类:

image-20260825163729396

class字节码的版本是jdk 17,那就至少得jdk17才能打开这个jar包了:

image-20260825163800606

我本地这个新电脑还没jdk17,只有jdk8,那先安装一下。

直接装个jdk21吧:

https://www.oracle.com/java/technologies/javase/jdk21-archive-downloads.html

Windows x64 Installer

image-20260825164015469

修改MAT配置文件,使用jdk21

在网上搜了下怎么改配置,以指定jdk21来打开mat。

然后直接就改了下MemoryAnalyzer.ini,网上答案五花八门,我试了好多种错误方案,如:

image-20260825164900901

还有以下错误答案:

为啥想着加引号,因为路径中间有空格,所以想着加一下:
-vm
"C:/Program Files/Java/jdk-21.0.12/bin/javaw.exe"

-vm
"C:/Program Files/Java/jdk-21.0.12/bin/"

还有windows反斜杠也试了。

结果后来,在cmd中试成功了:

这个可以:
F:\tools\MAT\MemoryAnalyzer-1.17.0.20260601-win32.win32.x86_64>MemoryAnalyzer.exe -vm "C:/Program Files/Java/jdk-21.0.12/bin/"

但我把同样配置弄到配置文件里,还是不行;然后豆包给我说,ini文件里不能用引号,那就这样:

image-20260825165337303

结果还是报错。

豆包又一顿分析,说要不你就是文件的格式是utf8(带了bom),导致这一行格式有问题:

image-20260825165459000

vscode安装Hex Editor插件直接查看二进制

正常来说,在notepad++之类或者vscode里,看到是utf8,可能基本能确定是UTF8还是带bom的utf8.

为了看得清清楚楚,我们可以直接看二进制。

vscode中有个hex editor插件:

image-20260825165808873

文件上右键,

image-20260825165832883

通过前几个字节就能看出来有没有bom:

  • 如果输出开头是 EF BB BF → 存在 UTF‑8 BOM

image-20260825165926456

按理说,我上面那个没bom,结果还是有问题。

豆包又给我分析了下,这次可是真分析到点上了,原来是短横线有点问题:

image-20260825170317624

然后手动重新敲了下短横线。还真的可以了。卧槽...

内存调整

mat需要自己调整下内存,不然dump文件很大就打不开:

image-20260825170740982

总结

刚写文的时候,找到了mat对应的github,发现readme里面就写了要怎么设置vm,结果当时没看到这个页面。折腾半天。

https://github.com/eclipse-mat/mat/wiki/faq

贴一下我这的配置:

-vm
C:/Program Files/Java/jdk-21.0.12/bin/
-startup
plugins/org.eclipse.equinox.launcher_1.7.100.v20251111-0406.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.3.0.v20260203-2149
-vmargs
--add-exports=java.base/jdk.internal.org.objectweb.asm=ALL-UNNAMED
-Xmx2048m

image-20260825170819538

posted @ 2026-08-25 17:10  三国梦回  阅读(78)  评论(0)    收藏  举报