测试代码
1 packagetest;2
3 importjava.util.LinkedList;4 importjava.util.List;5 importjava.util.UUID;6
7 public classDumpTest {8
9 public static voidmain(String[] args) {10 List s=new LinkedList();11 while (true) {12 s.add(UUID.randomUUID().toString());13 }14 }15 }
配置测试用jvm参数
-Xms20m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=d:\test.hprof
说明
HeapDumpOnOutOfMemoryError 内存溢出时dump文件保存在HeapDumpPath指定的位置,-XX:HeapDumpPath=/usr/local/tomcat 这样可以只指定保持的目录
-Xms20m 指定JVM初始内存为20m,-Xmx20m 指定JVM最大可用内存为20m
运行结果
软件准备
下载Eclipse Memory Analyzer 并解压, 地址 http://www.eclipse.org/mat/downloads.php
使用Eclipse Memory Analyzer打开d:\test.hprof文件
点击Finish之后生成分析报告
也可以使用jmap命令导出dump信息
linux# jmap -dump:file=/usr/local/tomcat/tomcat_8082/dumpfile01.hprof 12055
其中 12055 是进程号可以使用jps命令查看java进程信息