• jmap命令


    一、jmap -heap PID

    using parallel threads in the new generation.  ##新生代采用的是并行线程处理方式

    using thread-local object allocation.   

    Concurrent Mark-Sweep GC   ##同步并行垃圾回收

    Heap Configuration:  ##堆配置情况

    MinHeapFreeRatio = 40 ##最小堆使用比例

    MaxHeapFreeRatio = 70 ##最大堆可用比例

    MaxHeapSize      = 2147483648 (2048.0MB) ##最大堆空间大小

    NewSize          = 268435456 (256.0MB) ##新生代分配大小

    MaxNewSize       = 268435456 (256.0MB) ##最大可新生代分配大小

    OldSize          = 5439488 (5.1875MB) ##老生代大小

    NewRatio         = 2  ##新生代比例

    SurvivorRatio    = 8 ##新生代与suvivor的比例

    PermSize         = 134217728 (128.0MB) ##perm区大小

    MaxPermSize      = 134217728 (128.0MB) ##最大可分配perm区大小

    Heap Usage: ##堆使用情况

    New Generation (Eden + 1 Survivor Space):  ##新生代(伊甸区 + survior空间)

    capacity = 241631232 (230.4375MB)  ##伊甸区容量

    used     = 77776272 (74.17323303222656MB) ##已经使用大小

    free     = 163854960 (156.26426696777344MB) ##剩余容量

    32.188004570534986% used ##使用比例

    Eden Space:  ##伊甸区 

    capacity = 214827008 (204.875MB) ##伊甸区容量

    used     = 74442288 (70.99369812011719MB) ##伊甸区使用

    free     = 140384720 (133.8813018798828MB) ##伊甸区当前剩余容量

    34.65220164496263% used ##伊甸区使用情况

    From Space: ##survior1区

    capacity = 26804224 (25.5625MB) ##survior1区容量

    used     = 3333984 (3.179534912109375MB) ##surviror1区已使用情况

    free     = 23470240 (22.382965087890625MB) ##surviror1区剩余容量

    12.43827838477995% used ##survior1区使用比例

    To Space: ##survior2 区

    capacity = 26804224 (25.5625MB) ##survior2区容量

    used     = 0 (0.0MB) ##survior2区已使用情况

    free     = 26804224 (25.5625MB) ##survior2区剩余容量

    0.0% used ## survior2区使用比例

    concurrent mark-sweep generation: ##老生代使用情况

    capacity = 1879048192 (1792.0MB) ##老生代容量

    used     = 30847928 (29.41887664794922MB) ##老生代已使用容量

    free     = 1848200264 (1762.5811233520508MB) ##老生代剩余容量

    1.6416783843721663% used ##老生代使用比例

    Perm Generation: ##perm区使用情况

    capacity = 134217728 (128.0MB) ##perm区容量

    used     = 47303016 (45.111671447753906MB) ##perm区已使用容量

    free     = 86914712 (82.8883285522461MB) ##perm区剩余容量

    35.24349331855774% used ##perm区使用比例

    jmap -histo:live强制执行了下full gc

    二、JVM 优化的参数设

    1、堆的大小可以通过 -Xms 和 -Xmx 来设置,一般将他们设置为相同的大小,目的是避免在每次垃圾回收后重新调整堆的大小,比如 -Xms=2g -Xmx=2g 或者 -Xms=512m -Xmx=512m

    2、年轻代大小可以通过 -Xmn 来设置,比如-Xmn=2g 或者 -Xmn512m,此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8

    3、年老代大小 = 堆大小 – 年轻代大小

    4、持久代或者永久代大小可以通过 -XX:PermSize 和 -XX:MaxPermSize 来控制

    5、-XX:SurvivorRatio 控制 Eden和Survivor的内存占用比例,默认为8

         如果设置了NewRatio,那么整个堆空间的1/(NewRatio +1)就是新生代空间的大小,-XX:NewRatio推荐2到4.

        如果同时指定了NewRatio和NewSize,你应该使用更大的那个。于是,当堆空间被创建时,你可以用过下面的表达式计算初始新生代空间的大小:

     
    min(MaxNewSize, max(NewSize, heap/(NewRatio+1)))

     三、JVM内存溢出配置

        如何能在JVM遇到OOM错误的时候能够打印heap dump?可以设置-XX:+HeapDumpOnOutOfMemoryError参数,让JVM在探测到内存OOM的时候打印dump。但是在JVM启动参数添加这个参数的时候,JVM启动失败:Unrecognized VM option '+HeapDumpOnOutOfMemeryError' ,问题的原因是因为没有添加-XX:HeapDumpPath参数配置。-XX:HeapDumpPath这个参数可以设置dump文件的存放位置。将JVM启动参数设置成如下格式:

          -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=C:/  

    问题得到解决。当JVM发生内存溢出的时候,会在C:/下打印出heap dump

    四、JVM调优经验

      (1)调优前/后gc情况可以通过如下命令:jstat -gcutil <pid> 3000

              minor gc: 3~6次/3秒

              full gc: 1次/30秒

      (2)常用参数设置

        UseParNewGC表示对新生代采用并行gc;

        ParallelGCThreads表示并行的线程数为8,一般是cpu的核个数,当核个数大于8时可能不是很适用;

        UseConcMarkSweepGC表示对full gc采用CMS gc;

       -XX:+DisableExplicitGC 表示禁止显式gc,System.gc()

       -XX:+UseCMSCompactAtFullCollection 适用于CMS gc,表示在进行gc的同时清理内存碎片,但会加长gc的总时间

       -XX:CMSInitiatingOccupancyFraction=80 适用于CMS gc,表示在年老代达到80%使用率时马上进行回收

    在JVM Crash时获heap信息的一些配置参数:

      -XX:ErrorFile=./xxx.log   JVM Crash时记录heap信息

      -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./yyy.log JVM OOM时记录heap信息

  • 相关阅读:
    OleView.exe:查看机器上的COM 组件。
    COM中导出GUID
    进程外组件以及进程间通信方式
    拼接多个 wchar_t *
    wstring to wchar_t*
    BSTR
    GetProcAddress 使用注意事项
    C++和.net的集合类对应
    COM的一些基本概念
    Error Lookup工具
  • 原文地址:https://www.cnblogs.com/moonandstar08/p/4924602.html
Copyright © 2020-2023  润新知