JVM导出内存映像(dump)文件

JVM导出内存映像(dump)文件 什么是 dump 文件 一般来说,使用 jmap 指令生成 dump 文件的操作算得上是最常用的 jmap 命令之一,将堆中所有 存活对象导出至一个文件之中 Heap Dump 又叫做堆存储文件,指一个 Java 进程在某个时间点的内存快照。Heap Dump 在触发内存快照的时候会保存此刻的信息如下:

● All 0bjects Class, fields ,primitive values and references ● All Classes ClassLoader ,name , super class,static fields

● Garbage Collection Roots| objects defined to be reachable by the JVM ● Thread Stacks and Local Variables The call-stacks of threads at the moment of the snapshot ,and per- frameinformation about local objects 手动导出 jmap -dump:format = b,file = <filename,hprof> jmap -dump:live,format = b,file = <filename,hprof>

手动导出

jmap -dump:format = b,file = <filename,hprof> jmap -dump:live,format = b,file = <filename,hprof> 手动导出 jmap -dump:format = b,file = <filename,hprof> jmap -dump:live,format = b,file = <filename,hprof> 二、 1️⃣、在terminal终端中输入jps即可查看当前已启动的进程和对应的PID,如下图所示:pid=811 2️⃣、执行命令:jmap -dump:format=b,file=heap.bin jmap 能查看jvm内存中,对象占用内存的情况,还提供非常方便的命令将jvm的内存信息导出的文件。

format=b是通过二进制的意思,-dump:format=b,file=heap.bin意思是:把内存结构全部dump到二进制文件heap.bin中。

3️⃣、执行命令:jhat -J-Xmx512m heap.bin ,(ha指IBM的HeapAnalyzer) 就可以将我们刚刚使用jmap导出的内存信息交给jhat解析了。

默认的情况下,它会监听7000端口。本机的地址就是,http://localhost:7000/

  1. 查看JVM信息

2.1 查看整个JVM内存状态

jmap -heap [pid]

2.2 查看JVM堆中对象详细占用情况

jmap -histo [pid]

经验分享 程序员 微信小程序 职场和发展