【MAT】内存分析工具
MAT下载
工具下载
Linux版本: 链接: https://pan.baidu.com/s/1jdYASRmM01zFgh_wxmdEWA?pwd=6aww 提取码: 6aww
MAC 版本: 链接: https://pan.baidu.com/s/1Dzi0frJ0oNessPfbmy-tmw?pwd=q8rm 提取码: q8rm
官方 MAT 下载地址 http://www.eclipse.org/mat/downloads.php
使用
1、可视化的MAT使用
网上去找个来看看算了,
主要还是得看命令行(linux 版本的)
2、Linux版本的 MAT使用
1、下载好工具,上传到服务器,
MemoryAnalyzer-1.14.0.20230315-linux.gtk.x86_64.zip
2、解压
unzip MemoryAnalyzer-1.14.0.20230315-linux.gtk.x86_64.zip
3、修改配置文件 MemoryAnalyzer.ini
为啥要修改这个文件(因为它默认的内存只有1G,是不够用的,很多时候是不够用的。。。如果某个程序运行用了4G,然后它OOM的时候,也是接近4G了,那它导出来的 dump文件,需要去加载它,也至少要4G的存储,否则加载这个 dump文件的时候,就先OOM了。。。)
把它修改大一点!(看实际情况而定)
vim MemoryAnalyzer.ini
-startup
plugins/org.eclipse.equinox.launcher_1.6.400.v20210924-0641.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.2.700.v20221108-1024
-vmargs
--add-exports=java.base/jdk.internal.org.objectweb.asm=ALL-UNNAMED
-Xmx4096m
-XX:+UseG1GC
-Xmx 最大堆大小,这里写了4G。
当然也可以写更大(如果服务器内存够的话,比如 -Xmx64G, 哈哈。。。)
修改完后,保存
4、执行命令
也可以保存在脚本:analyze.sh (好像没有啥用,文件每次都不一样。。。不过没关系啦,可以记录一下)
/root/mat/memoryAnalyzer-linux/ParseHeapDump.sh \
/tmp/test/xxx3.bin \
org.eclipse.mat.api:suspects \
org.eclipse.mat.api:overview \
org.eclipse.mat.api:top_components
sh analyze.sh
执行,然后开始
Task: Reopening parsed heap dump file
[.........]
Subtask: Leak Suspects
[
Subtask: System Overview
[
Subtask: Test 'Heap Dump Overview' of section 'System Overview'
[
Subtask: Test 'System Properties' of section 'System Overview'
[
Subtask: Extracting Key Value Pairs...
[
Subtask: Extracting Key Value Pairs...
java.util.Properties
[
Subtask: Test 'Thread Overview' of section 'System Overview'
[
Subtask: Searching Threads...
[
Subtask: Test 'Top Consumers' of section 'System Overview'
[
Subtask: Creating histogram
[
Subtask: Grouping by package
[
Subtask: Top Consumers
[
Subtask: Test 'Biggest Objects (Overview)' of section 'Top Consumers'
[
Subtask: Test 'Biggest Objects' of section 'Top Consumers'
[
Subtask: Test 'Biggest Top-Level Dominator Classes (Overview)' of section 'Top Consumers'
[
Subtask: Test 'Biggest Top-Level Dominator Classes' of section 'Top Consumers'
也挺快,可能我这个文件比较小,但肯定比可视化的快(可能本地的电脑确实比不上服务器)
然后,当它完成时,就会生成几个压缩文件
文件拿到了,把压缩包下载到本地,用浏览器打开就可以分析了。
关于MAT结果怎样看,,,,emmm,下一篇再记吧
报错:
1、Cannot load from short array because “sun.awt.FontConfiguration.head“ is null
这个原因是: 系统缺少相应的字体。安装相应的字体即可解决。
yum install fontconfig
fc-cache --force
另:
参考文章: https://www.cnblogs.com/hellxz/p/use_mat_linux_command_line_generate_reports.html