- 测试代码
1 package test; 2 3 import java.util.LinkedList; 4 import java.util.List; 5 import java.util.UUID; 6 7 public class DumpTest { 8 9 public static void main(String[] args) {10 Lists=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进程信息