【问题标题】:why the result of jmap -histo is different from jmap -dump为什么 jmap -histo 的结果与 jmap -dump 不同
【发布时间】:2019-03-28 11:27:01
【问题描述】:

最近我遇到了一个 gc 问题,我使用 jmap 转储了堆。但不幸的是它不能正常工作;

我在dump之前运行jmap -histo 3916|more,结果是

 num     #instances         #bytes  class name
----------------------------------------------
   1:       1784198      733117168  [C
   2:      12210014      390720448  java.util.concurrent.ConcurrentHashMap$Node
   3:      11908601      285806424  java.lang.Long
   4:      11884602      285230448  java.lang.Double
   5:           545       86335608  [Ljava.util.concurrent.ConcurrentHashMap$Node;
   6:         12405       65677584  [I
   7:       1735496       41651904  java.lang.String

然后我运行“jmap -dump:format=b,file=heap.bin 3916”,然后我使用 eclipse MemoryAnalyzer 分析 heap.bin,生成如下直方图

Class Name                                   |    Objects | Shallow Heap | Retained Heap
-----------------------------------------------------------------------------------------
java.util.concurrent.ConcurrentHashMap$Node  | 12,207,879 |  390,652,128 |              
java.lang.Long                               | 11,889,204 |  285,340,896 |              
java.lang.Double                             | 11,884,164 |  285,219,936 |              
java.util.concurrent.ConcurrentHashMap$Node[]|        347 |   86,311,832 |              
char[]                                       |  1,659,912 |   50,128,128 |              
java.lang.String                             |  1,659,062 |   39,817,488 |              
-----------------------------------------------------------------------------------------

分析这两个结果,我发现dump中的对象都小于histo,并且 char[] 的对象要少得多,但为什么呢? jmap 在运行“jmap -dump”命令时会触发次要 gc 吗?

【问题讨论】:

    标签: java jvm jmap


    【解决方案1】:

    jmap 不会触发 GC,除非您指定 :live 选项。如果没有此选项,直方图将包含无法访问的对象。

    但是,内存分析器在解析堆转储时默认为 removes unreachable objects。虽然也可以使用 Memory Analyzer 计算无法访问的对象。

    【讨论】:

      猜你喜欢
      • 2017-11-14
      • 2011-08-24
      • 1970-01-01
      • 2013-08-18
      • 2014-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多