MAT java 内存分析工具
导出内存的两种方法
- java 命令行参数设置
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=./
- 用JMap导出当前进程的内存镜像
heap.hprof是导出内存镜像的文件名
live参数导出存活对象
jmap -dump:live,format=b,file=heap.hprof pid
下载&mac启动
下载地址
https://www.eclipse.org/mat/downloads.php
mac启动 MAT
下载mat文件,右键选择显示包内容。
浏览包内容,右键Contents/MacOs/MemoryAnalyzer终端运行。
打开文件,选择hprof文件,弹出对话框,选择Leak Suspect report。
MAT结果
1.报告
2.统计信息
全部统计信息
- Objects 对象数量
- Shallow Heap 自身在堆栈的大小
-
Retained Heap 引用对象占堆栈的大小,释放该对象能释放Heap的大小。
按类名过滤统计信息
3.查看类型的应用关系
选择对象,右键 Merge path。
在结果中,可以点开类,查看引用层级。当看到完整的引用路径,就可以定位产生溢出的具体位置。
4.查看对象层级信息
通过层级方式查看内存对象。
网友评论