jmap
JDK自带了一些工具可以帮助我们查看JVM运行的堆内存情况,常用的是jmap命令
jmap -heap 打印堆的使用情况
那么,从这个输出中我们也可以大致看出堆的结构,分为Young Generation (年轻代) 和 Old Generation (老年代)
Young Generation又被划分为:Eden Space , From Space 和 To Space
可以看到这里To区是干净的,还未被使用,From区已经使用了95%了
jmap -histo[:live] 打印类的实例数量、占用的内存、类的名称,通常我们并不需要看所有的,只需要看前几条即可
jmap -dump:live,format=b,file=heap.bin
以hprof二进制格式dump堆的使用情况(PS:相当于生成一个快照,后续我们可以对这个快照文件进行分析)