文章目录
- 前言
- java -进行堆转储文件分析
- 1. 首先在window上主动生成堆转储文件
- 2. 获取堆转储文件的方式
- 3. 堆转储文件分析
前言
如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。
而且听说点赞的人每天的运气都不会太差,实在白嫖的话,那欢迎常来啊!!!
java -进行堆转储文件分析
1. 首先在window上主动生成堆转储文件
查询 java 程序pid
如果你想在没有内存溢出错误的情况下手动生成堆转储文件,你可以使用以下命令:
jcmd GC.heap_dump 堆转储文件路径
示例:
jcmd 29784 GC.heap_dump D:\test\test.hprof
2. 获取堆转储文件的方式
启用自动堆转储: 可以通过在 Java 虚拟机的启动参数中设置
-XX:+HeapDumpOnOutOfMemoryError 来启用自动堆转储。这样,当应用程序遇到内存溢出错误时,Java 虚拟机会自动生成堆转储文件。
示例:java -XX:+HeapDumpOnOutOfMemoryError -jar YourApplication.jar
使用 JVM 参数控制转储文件的位置和格式: 你可以使用以下 JVM 参数来控制生成的堆转储文件的位置和格式:
-XX:HeapDumpPath=:指定堆转储文件的保存路径和文件名。
-XX:HeapDumpOnOutOfMemoryError:在内存溢出时自动生成堆转储文件。
-XX:HeapDumpOnCtrlBreak:在接收到 Ctrl+Break 信号时生成堆转储文件(仅适用于 Windows 平台)。
-XX:+HeapDumpAfterFullGC:在每次完整的垃圾收集后生成堆转储文件。
手动触发堆转储: 除了在内存溢出错误时自动生成堆转储文件外,你还可以手动触发堆转储。可以通过运行一个简单的 Java 工具来手动触发堆转储。例如,可以使用 jcmd 工具(Java 命令行工具):
jcmd <pid> GC.heap_dump <file-path>
3. 堆转储文件分析
打开MemoryAnalyzer导入文件
在首页上比较有用的是Histogram和Leak Suspects。
点击Histogram
点击后跳到下图,就可以进行内存分析了
点击Leak Suspects会在堆转储文件同目录内生成一个Leak Suspects.zip文件,同时也会从首页跳转到Leak Suspects页面。
红框处是系统分析可能出现泄漏的地方。