zoukankan      html  css  js  c++  java
  • JDK常用命令(三)jmap

    jmap

      jmap,Java Memory Map。主要用于打印指定Java进程(或核心文件、远程调试服务器)的共享对象内存映射或堆内存细节。

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

    常见命令格式

      jmap pid    打印出某个java进程内存中所有‘对象’的情况。

      jmap -heap pid   打印jvm heap的情况

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

      jmap -histo:live :打印jvm heap的直方图,但是只答应存活对象的情况

      jmap -permstat:打印permanent generation heap情况

      jmap -dump:format=b,file=outfile 3024    可以将3024进程的内存heap输出出来到outfile文件里,再配合MAT(内存分析工具(Memory Analysis Tool)或与jhat (Java Heap Analysis Tool)一起使用,能够以图像的形式直观的展示当前内存是否有问题。

    例子

    jmap -heap pid输出内容如下:

    Heap Configuration:
       MinHeapFreeRatio         = 0
       MaxHeapFreeRatio         = 100
       MaxHeapSize              = 4276092928 (4078.0MB)
       NewSize                  = 89128960 (85.0MB)
       MaxNewSize               = 1425014784 (1359.0MB)
       OldSize                  = 179306496 (171.0MB)
       NewRatio                 = 2
       SurvivorRatio            = 8
       MetaspaceSize            = 21807104 (20.796875MB)
       CompressedClassSpaceSize = 1073741824 (1024.0MB)
       MaxMetaspaceSize         = 17592186044415 MB
       G1HeapRegionSize         = 0 (0.0MB)
    
    Heap Usage:
    PS Young Generation
    Eden Space:
       capacity = 296222720 (282.5MB)
       used     = 178707040 (170.42831420898438MB)
       free     = 117515680 (112.07168579101562MB)
       60.32860679964049% used
    From Space:
       capacity = 2097152 (2.0MB)
       used     = 1792336 (1.7093048095703125MB)
       free     = 304816 (0.2906951904296875MB)
       85.46524047851562% used
    To Space:
       capacity = 18874368 (18.0MB)
       used     = 0 (0.0MB)
       free     = 18874368 (18.0MB)
       0.0% used
    PS Old Generation
       capacity = 224919552 (214.5MB)
       used     = 102162160 (97.42942810058594MB)
       free     = 122757392 (117.07057189941406MB)
       45.42164480213797% used
    
    42771 interned Strings occupying 4729976 bytes.

    常见字段解释:

    Heap Configuration: #堆内存初始化配置
    MinHeapFreeRatio = 40 #-XX:MinHeapFreeRatio设置JVM堆最小空闲比率
    MaxHeapFreeRatio = 70 #-XX:MaxHeapFreeRatio设置JVM堆最大空闲比率
    MaxHeapSize = 100663296 (96.0MB) #-XX:MaxHeapSize=设置JVM堆的最大大小
    NewSize = 1048576 (1.0MB) #-XX:NewSize=设置JVM堆的‘新生代’的默认大小
    MaxNewSize = 4294901760 (4095.9375MB) #-XX:MaxNewSize=设置JVM堆的‘新生代’的最大大小
    OldSize = 4194304 (4.0MB) #-XX:OldSize=设置JVM堆的‘老生代’的大小
    NewRatio = 2 #-XX:NewRatio=:‘新生代’和‘老生代’的大小比率
    SurvivorRatio = 8 #-XX:SurvivorRatio=设置年轻代中Eden区与Survivor区的大小比值
    PermSize = 12582912 (12.0MB) #-XX:PermSize=<value>:设置JVM堆的‘持久代’的初始大小
    MaxPermSize = 67108864 (64.0MB) #-XX:MaxPermSize=<value>:设置JVM堆的‘持久代’的最大大小

  • 相关阅读:
    Java中使用Base64编码URL
    JSON Web Token (JWT)入门学习
    1047. 删除字符串中的所有相邻重复项
    1021. 删除最外层的括号
    使用shell获取随机端口<帮你解决端口的占用烦恼>
    初始化一个vue项目并生成完整的目录结构
    mysql-常用字符函数
    设计模式-单例模式-饿汉和懒汉
    Java-指令的重排序
    Java-反射类加载到内存分析
  • 原文地址:https://www.cnblogs.com/guanghe/p/10621768.html
Copyright © 2011-2022 走看看