一句话 分析 heap profile 文件
1 运行应用程序(使用jre版本为1.6以上)
2 命令行执行
jmap -dump:format=b,file=d:/heap.hprof <pid>
其中d:/heap.hprof 是dump出来的内存映像发文件,可以取任何后缀的名字。
3 使用eclipse 的MAT分析d:/heap.hprof 文件,可以查看哪些对象占据大多数的内存空间。
4 个人感觉MAT最重要的是leak suspects,帮助分析出那些可疑对象:
5 获得hprof文件的其他途径:
java -Xms20M -Xmx20M -Xmn10m -XX:+UseSerialGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:PretenureSizeThreshold=3000000 -Xloggc:D:/gc.log -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=d:/test.hprof gc.SerialGCDemo
其中红色部分表示内存OOM的时刻,将内存镜像输出文件到D:/test.hprof
-XX:+HeapDumpOnOutOfMemoryError 打开选项
-XX:HeapDumpPath=d:/test.hprof 指定路径