• jmap, jhat命令


     

    jmap命令有下面几种常用的用法

    jmap [pid]

    jmap -histo:live [pid] >a.log

    jmap -dump:live,format=b,file=xxx.xxx [pid]

    用得最多是后面两个。其中,jmap -histo:live [pid] 可以查看当前Java进程创建的活跃对象数目和占用内存大小。

     

    jmap查看各个代的内存使用

    jmap 可以从 core dump文件或进程中获得内存的具体匹配情况,包括 Heap size, Perm size等等。

    jmap命令格式:

         jmap [ option ] <pid> | <executable core> | <[server-id@]remote-hostname-or-IP>

    1)参数说明 

    pid:java进程 id

    executable:产生 core dump的 java可执行程序

    core:core dump文件

    remote-hostname-or-IP:远程 debug服务的主机名或 ip

    server-id:远程 debug服务的 id

    2) option参数:

    -heap

    打印heap的概要信息,GC 使用的算法,heap的配置及使用情况 .

    -histo[:live]

    打印jvm heap 的直方图。输出类名、每个类的实例数目、对象占用大小。 VM的内部类名字开头会加上前缀 ”*”.

    如果加上live 则只统计活的对象数量。

    -dump:[live,]format=b,file=<filename>

    使用hprof二进制形式,导出heap 内容到文件filename。

    假如指定live 选项,那么只输出活的对象到文件 .

    hprof二进制可用jhat命令查看,

    jhat是sun 1.6及以上版本中自带的一个用于分析JVM 堆DUMP 文件的工具,基于此工具可分析JVM HEAP 中对象的内存占用情况

    一般情况下,我们都会配置上-XX:+HeapDumpOnOutOfMemoryError,

     然后使用MAT工具去分析(Memory Analyzer Tool ),MAT使用很简单。

    -clstats

    打印classload 和jvm heap 持久代的信息。

    包含每个classloader 的名字、是否存活、地址、父 classloade、加载的 class数量、内部 String的数量和占用内存数。

    使用 jmap -heap pid ,可以查看各个代的内存使用情况,如:New Generation(Eden Space,From Space,To Space),tenured generation,Perm Generation的内存使用情况。

    jmap -dump:format=b,file=heapdump.hprof <pid> ,导出heap dump到文件heapdump.hprof

  • 相关阅读:
    [离散数学]集合3.1、3.2、3.3
    Hadoop YARN ResourceManager 未授权访问漏洞复现
    dns域传送漏洞
    文件包含漏洞详解
    XXE漏洞详解
    常见cms
    IP地址详解
    帧详解
    IP包头内容详解
    SSRF漏洞详解
  • 原文地址:https://www.cnblogs.com/ken-jl/p/8998880.html
Copyright © 2020-2023  润新知