当前位置:首页 > java > 正文内容

java 对象内存分析工具 jmap

root3年前 (2021-12-30)java1336

jmap — 打印指定进程的共享对象内存映射或堆内存细节

jmap 命令可以获得运行中的jvm的堆的快照,从而可以离线分析堆,以检查内存泄漏,检查一些严重影响性能的大对象的创建,检查系统中什么对象最多,各种对象所占内存的大小等等。可以使用jmap生成Heap Dump


java memory = direct memory(直接内存) + jvm memory(MaxPermSize +Xmx)


命令简介

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
    -heap                to print java heap summary
    -histo[:live]        to print histogram of java object heap; if the "live"
                         suboption is specified, only count live objects
    -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
                         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.
    -h | -help           to print this help message
    -J<flag>             to pass <flag> directly to the runtime system

重要参数说明

  • -heap:打印jvm heap的情况

  • -histo:打印jvm heap的直方图。其输出信息包括类名,对象数量,对象占用大小。

  • -histo:live :同上,但是只答应存活对象的情况

  • -permstat:打印permanent generation heap情况



具体使用

首先查询出一个java 运行的程序 的pid

如下pid 15665

image.png

查看对象内存情况

jmap -histo  15665

image.png


排序查询

jmap -histo:live  15665

 还可以过滤

jmap -histo:live  15665 |grep ArrayList


查询出来的信息比较多,重定向到文件中

jmap -histo:live  15665 |grep ArrayList > a.log


原文

扫描二维码推送至手机访问。

版权声明:本文由一叶知秋发布,如需转载请注明出处。

本文链接:http://zhiqiu.top/?id=194

分享给朋友:

相关文章

java mybatis 语法之 foreach 对列表的处理

<delete id="batchDeleteEmps" parameterType="int"> delete from emp wh...

java mybatis Parameter index out of range (5 > number of parameters, which is 4

java mybatis Parameter index out of range (5 > number of parameters, which is 4

该报错在修改mapper的xml之后出现的发现是因为注释的问题导致的在xml中注释已经要谨慎。...

java 内存分页实现以及list的stream流

package com.how2java.springboot; import org.springframework.util.CollectionUtils; import java.util....

实体类(VO,DO,DTO,PO)的划分

实体类(VO,DO,DTO,PO)的划分

经常会接触到VO,DO,DTO的概念,本文从领域建模中的实体划分和项目中的实际应用情况两个角度,对这几个概念进行简析。得出的主要结论是:在项目应用中,VO对应于页面上需要显示的数据(表单),DO对应于数据库中存储的数据(数据表),DTO对应...

java @Bean 注解

Spring的@Bean注解用于告诉方法,产生一个Bean对象,然后这个Bean对象交给Spring管理。产生这个Bean对象的方法Spring只会调用一次,随后这个Spring将会将这个Bean对象放在自己的IOC容器中。SpringIO...

java springboot 工具类之post、get请求

org.springblade.modules.netprobe.utilsorg.springframework.http.*org.springframework.util.CollectionUtilsorg.springframew...