jmap简介

一、定义

jmap是jdk自带的原生命令,包含很多功能,如生成堆栈dump文件、查看堆内的对象信息、classloader类加载信息一级finalizer队列,只是jmap没有图形界面。

二、使用方法

命令格式:

jmap -[options] <pid>

options参数命令详解:

  • no options:无参数,则查询打印大于内存中的共享对象信息

结果包含三列:

(16进制)共享对象的地址;

对象的映射大小

共享对象文件的路径全称

  • heap :打印Java堆详细信息
Attaching to process ID 2496, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.152-b187

using parallel threads in the new generation.
using thread-local object allocation.
Concurrent Mark-Sweep GC

#堆参数设置
Heap Configuration:
   #空闲堆空间的最小百分比,如果当前堆空间空闲率<MinHeapFreeRatio,则需要进行堆扩容,扩容时机在垃圾回收之后
   MinHeapFreeRatio         = 40
   #空闲堆空间的最大百分比,如果当前堆空间空闲率>MaxHeapFreeRatio,则需要进行堆缩容,缩容时机在垃圾回收之后
   MaxHeapFreeRatio         = 70
   #最大堆内存
   MaxHeapSize              = 4294967296 (4096.0MB)
   #新生代空间默认值
   NewSize                  = 2147483648 (2048.0MB)
   #新生代空间最大值
   MaxNewSize               = 2147483648 (2048.0MB)
   #老年代空间默认值
   OldSize                  = 2147483648 (2048.0MB)
   #新生代与老年代空间比值
   NewRatio                 = 2
   #Survivor与eden区的空间比值,默认为8
   SurvivorRatio            = 8
   #元空间默认值
   MetaspaceSize            = 268435456 (256.0MB)
   CompressedClassSpaceSize = 1073741824 (1024.0MB)
   #元空间最大值
   MaxMetaspaceSize         = 536870912 (512.0MB)
   #G1垃圾回收算法中每个region空间的大小
   G1HeapRegionSize         = 0 (0.0MB)

#堆内存使用详情
Heap Usage:
#新生代使用详情
New Generation (Eden + 1 Survivor Space):
   capacity = 1968570368 (1877.375MB)
   used     = 1282502552 (1223.089744567871MB)
   free     = 686067816 (654.2852554321289MB)
   65.14893106427171% used
Eden Space:
   capacity = 1789657088 (1706.75MB)
   used     = 1263326968 (1204.8024826049805MB)
   free     = 526330120 (501.94751739501953MB)
   70.59044866588431% used
From Space:
   capacity = 178913280 (170.625MB)
   used     = 19175584 (18.287261962890625MB)
   free     = 159737696 (152.33773803710938MB)
   10.717809209020146% used
To Space:
   capacity = 178913280 (170.625MB)
   used     = 0 (0.0MB)
   free     = 178913280 (170.625MB)
   0.0% used

#老年代使用详情
concurrent mark-sweep generation:
   capacity = 2147483648 (2048.0MB)
   used     = 1218256848 (1161.8202667236328MB)
   free     = 929226800 (886.1797332763672MB)
   56.72950521111488% used
  • histo[:live]:打印堆中对象的统计信息,若带:live则值显示存活的对象,不带则是所有的

由于打印结果较多,所以我们一般会加上数量限制,在命令后面拼接 head -n(n为查看数量)

结果包含四列:

num(行号)

instances(实例数量)

bytes(对象占用总大小,单位为字节)

类全限定名([C为char[]数组,[B为byte[]数组,[I为int[]数组)

  • clstats:打印类加载信息
  • finalizerinfo:显示在F-Queue队列等待被清理的对象;F-Queue用来存放需要被GC回收的对象,清理时会执行对象的finalizer()方法;
  • dump:生成堆存储快照

使用示例:其中:live为过滤出存活的对象,format=b代表以二进制的格式存储,file=jmap.bin代表存储的文件名,默认保存到当前目录,若file不指定则默认为java_pid.hprof

jmap -dump:live,format=b,file=jmap.bin  2469

因为保存的是bin文件,所以需要使用jvisualvm或者jhat打开。

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值