在运行时加上参数-XX:+HeapDumpOnOutOfMemoryError,JVM就会在内存泄漏时自动地生成hprof格式的dump文件。
先确定Java程序的pid:
ps -aux | grep java然后运行命令:
jmap -dump:format=b,file=dump.hprof pidJava内存文件就会被dump出来。
先下载软件:Eclipse Memory Analyzer Open Source Project | The Eclipse Foundation
目前的最新版本是1.8.1。
然后打开文件,选择默认的Leak Suspects Report 然后内存泄漏报告会展示出来: 回到OverView页面,下面有几个常用的选项:
打开内存泄漏页面: 看到下面的说明:
The class "java.lang.ref.Finalizer", loaded by "<system class loader>", occupies 3,978,336 (36.07%) bytes. The memory is accumulated in one instance of "java.lang.ref.Finalizer" loaded by "<system class loader>". Keywords java.lang.ref.Finalizer点击Details查看详情: 先说明一下java.lang.ref.Finalizer是什么:
java.lang.ref.Finalizer 是(没时间写博客了,以后再写)