工具之jmap

0、写在前面

我是使用win环境来熟悉jmap命令,64为的win10系统

1、jmap介绍

JVM Memory Map
命令是一个可以输出所有内存中对象的工具,甚至可以将VM 中的heap(堆),以二进制输出成文本。
打印出某个java进程(使用pid)内存内的,所有‘对象’的情况(如:产生那些对象,及其数量)。

看下文档帮助

C:\Users\wenwen>jmap -help
Usage:
    jmap [option] <pid>
        (to connect to running process)//连接到运行中的进程
    jmap [option] <executable <core>
        (to connect to a core file)//连接到一个核心文件
    jmap [option] [server_id@]<remote server IP or hostname>
        (to connect to remote debug server)//连接到远程调试服务器

where <option> is one of://<参数>其中之一
    <none>               to print same info as Solaris pmap
    					 //打印与“SUN微系统公司开发的一种网络操作系统”pamp相同的信息
    -heap                to print java heap summary
    					 //打印java堆总结
    -histo[:live]        to print histogram of java object heap; if the "live"
                         suboption is specified, only count live objects
                         //打印java堆对象柱状图;如果有"live"子选项,则仅把存活对象算入柱状图
    -clstats             to print class loader statistics
    					 //打印类加载统计
    -finalizerinfo       to print information on objects awaiting finalization
    					 //打印对象等待终结信息
    -dump:<dump-options> to dump java heap in hprof binary format
    					 //转存java堆信息用hprof二进制形式
                         dump-options://子选项,转储参数
                           live         dump only live objects; if not specified,
                                        all objects in the heap are dumped.
                                        //仅转储存活队形;如果不指定所有对象都转储
                           format=b     binary format
                           				//二进制形式
                           file=<file>  dump heap to <file>
                           				//转储堆到文件地址
                         Example: jmap -dump:live,format=b,file=heap.bin <pid>
						 //例子
    -F                   force. Use with -dump:<dump-options> <pid> or -histo
                         to force a heap dump or histogram when <pid> does not
                         respond. The "live" suboption is not supported
                         in this mode.
                         //强制。使用-dump或-histo去强行一个堆转储或柱状图当pid不能响应。不支持“live”子选项在这个模型
    -h | -help           to print this help message//答应这个命令帮助
    -J<flag>             to pass <flag> directly to the runtime system
    					 //通过flag直接发送到运行时系统

2、如何找到pid

我这里使用了Java提供的另一个命令jps:显示当前所有java进程pid的命令。我的跑的程序的名字为“LifeBlogApplication”,所以进程ID为106180
在这里插入图片描述

3、jmap -heap

jmap -heap 106180
在这里插入图片描述

4、jmap -dump:

在这里插入图片描述
在这里插入图片描述
可以找分析工具分析这个文件,这里使用jhat。
注意如果Dump文件太大,可能需要加上-J-Xmx512m这种参数指定最大堆内存,即jhat -J-Xmx512m -port 9998 /tmp/dump.dat。
在这里插入图片描述
打开服务页面
在这里插入图片描述
在最下面

  1. 显示出堆中所包含的所有的类
  2. 从根集能引用到的对象
  3. 显示平台包括的所有类的实例数量(包含)
  4. 显示平台包括的所有类的实例数量(排除)
  5. 堆实例的分布表
    在这里插入图片描述

躬身自省,淳朴而谦逊否——文文的博客
前辈见之,如有问题,麻烦留言斧正。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

园长的牧歌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值