【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'

也挺快,可能我这个文件比较小,但肯定比可视化的快(可能本地的电脑确实比不上服务器)
然后,当它完成时,就会生成几个压缩文件
image

文件拿到了,把压缩包下载到本地,用浏览器打开就可以分析了。

关于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

posted @ 2023-11-17 18:15  aaacarrot  阅读(205)  评论(0编辑  收藏  举报