zoukankan      html  css  js  c++  java
  • 【JVM】jmap命令使用

    1、jmap命令概述

     jmap是一个可以输出内存中所有对象的工具。可以将JVM中的heap(堆),以二进制形式输出成文本。打印出某个java进程内存内所有'对象'的情况。

    2、基本命令

     1、jmap -heap  <pid> : 打印heap的概要信息,GC使用的算法,heap的配置及wise heap的使用情况。

     说明:pid指java进程号

     也可以将堆信息输出到文件中。jmap -heap pid >heap.txt

    Attaching to process ID 6349, please wait...
    Debugger attached successfully.
    Server compiler detected.
    JVM version is 25.212-b04
    
    using thread-local object allocation.
    Parallel GC with 4 thread(s)
    
    Heap Configuration:
       MinHeapFreeRatio         = 0                         【最小堆使用比例】
       MaxHeapFreeRatio         = 100                       【最大堆可用比例】
       MaxHeapSize              = 268435456 (256.0MB)       【最大堆空间大小】
       NewSize                  = 44564480 (42.5MB)         【新生代分配大小】
       MaxNewSize               = 89128960 (85.0MB)         【新生代最大可分配大小】
       OldSize                  = 89653248 (85.5MB)         【老年代大小】
       NewRatio                 = 2                            【新生代占的比例】
       SurvivorRatio            = 8                            【新生代与suvivor的比例】
       MetaspaceSize            = 21807104 (20.796875MB)
       CompressedClassSpaceSize = 1073741824 (1024.0MB)
       MaxMetaspaceSize         = 17592186044415 MB
       G1HeapRegionSize         = 0 (0.0MB)
    
    Heap Usage:                                              【堆使用情况】
    PS Young Generation                                      【新生代】
    Eden Space:                                              【Eden区】
       capacity = 87031808 (83.0MB)                           【Eden区容量】
       used     = 66957240 (63.85540008544922MB)              【Eden区使用量】
       free     = 20074568 (19.14459991455078MB)              【Eden区当前剩余容量】
       76.93421697042075% used                                【Eden区使用情况百分比】
    From Space:                                              【From survivor区】  
       capacity = 1048576 (1.0MB)                             【From survivor区容量】
       used     = 278544 (0.2656402587890625MB)               【From survivor区已使用量】
       free     = 770032 (0.7343597412109375MB)               【From survivor区剩余容量】
       26.56402587890625% used                                【From survivor区使用比例】
    To Space:                                                【To survivor区】
       capacity = 1048576 (1.0MB)                             【To survivor区容量】
       used     = 0 (0.0MB)                                   【To survivor区使用量】
       free     = 1048576 (1.0MB)                             【To survivor区剩余容量】
       0.0% used                                              【To survivor区使用比例】
    PS Old Generation                                        【老年代】
       capacity = 179306496 (171.0MB)                         【老年代容量】
       used     = 106356544 (101.42950439453125MB)            【老年代已使用容量】
       free     = 72949952 (69.57049560546875MB)              【老年代剩余容量】
       59.31549964592471% used                                【老年代使用比例】
    
    30237 interned Strings occupying 3151392 bytes.

     2、jmap -histo[:live]  <pid> :打印每个class的实例数目,内存占用,类全名信息。VM的内部类名字开头会加上前缀'*'。如果live子参数加上后,只统计活的对象数量。

     也可以将信息输出到文件中

     jmap -histo 6349 >histo.txt
     jmap -histo:live 6349 >histo_live.txt

     说明: instances(实例数)、bytes(占用的字节大小)、 class name(类名)。它基本是按照使用使用大小逆序排列的。

     

    instance 是对象的实例个数 
    bytes 是总占用的字节数 
    class name 对应的就是 Class 文件里的 class 的标识 
    
    B 代表 bytes
    C 代表 char
    D 代表 double
    F 代表 float
    I 代表 int
    J 代表 long
    Z 代表 boolean
    前边有 [ 代表数组 [I 表示 int[]
    对象用 [L+ 类名表示

    3、jmap dump:[live,] format=b,file=<filename> <pid> :使用hprof二进制形式,输出jvm的heap内容到文件。live子选项是可选的,假如指定live选项,那么只输出活的对象到文件。

      jmap -dump:format=b,file=dump.bin 6349

     

    将dump输出的outfile文件使用MAT(内存分析工具(Memory Analysis Tool))  或与 jhat(Java Heap Analysis Tool) 一起使用,能够以图像的形式直观展示当前内存是否有问题。

    4、jmap -finalizerinfo  <pid> : 打印正在等候回收的信息

     

      

     参考地址

     jmap命令详解(转)https://www.cnblogs.com/qq78292959/p/5141209.html

     java命令--jmap命令使用https://www.cnblogs.com/huanglog/p/10302901.html

     

  • 相关阅读:
    FastAPI 学习之路(十九)处理错误
    FastAPI 学习之路(二十六)全局依赖项
    FastAPI 学习之路(二十)接口文档配置相关
    FastAPI 学习之路(二十二)依赖项
    FastAPI 学习之路(二十一)请求体 更新数据
    FastAPI 学习之路(二十四)子依赖项
    Never worry about ASP.NET AJAX’s .d again
    Java C格式输入利用printf函数
    Oracle正则表达式函数
    javascript 事件驱动编程【转(原文为“事件驱动的javascript”)】
  • 原文地址:https://www.cnblogs.com/kiko2014551511/p/12881887.html
Copyright © 2011-2022 走看看