Java:为什么多个对象显示有 runhprof 输出?

标签 java hprof

我很好奇 runhprof 的输出?我主要关心内存部分。看起来同一类有多个条目。为什么会这样。

有没有办法让 hprof 打印特定类(该类的实例)在内存中占用的内存量。每个类别一个值。

此外,除了“帽子”之外,您还使用什么工具来分析输出?

我用 jvm arg 运行了 java 命令:

-Xrunhprof:heap=sites,depth=4,format=a,file=prof/hprof_dump.txt

这是输出的简短片段。有些类在输出中多次列出。

SITES BEGIN (ordered by live bytes) Tue Jul 28 19:33:41 2009
          percent          live          alloc'ed  stack class
 rank   self  accum     bytes objs     bytes  objs trace name
    1 29.75% 29.75%    700080 43755 576000016 36000001 307483 java.lang.Double
      2  7.13% 36.88%    167840 5245    370432 11576 300993 clojure.lang.PersistentHashMap$LeafNode
        3  2.09% 38.98%     49296 2054     60048  2502 301295 clojure.lang.Symbol
        4  2.09% 41.07%     49200    3     49200     3 301071 char[]
        5  1.33% 42.40%     31344 1306     68088  2837 300998 clojure.lang.PersistentHashMap$BitmapIndexedNode
        6  1.10% 43.50%     25800  645     25800   645 301050 clojure.lang.Var
        7  1.05% 44.54%     24624    3     24624     3 301069 byte[]
        8  0.86% 45.40%     20184  841     49608  2067 301003 clojure.lang.PersistentHashMap$INode[]
        9  0.78% 46.18%     18304  572     58720  1835 301308 clojure.lang.PersistentList
       10  0.75% 46.93%     17568  549     17568   549 308832 java.lang.String[]
       11  0.70% 47.62%     16416    2     16416     2 301036 byte[]

最佳答案

Eclipse Memory Analyzer很棒。非常非常快地加载转储文件,生成很多关于堆转储的漂亮报告,让您可以使用类似 SQL 的语言查询对象/类的转储。喜欢它。

关于Java:为什么多个对象显示有 runhprof 输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1197697/

相关文章:

java - 无法从主要 Activity 转到另一个 Activity ,应用程序崩溃

java - 在 varchar 列中存储快速编码数据

Java HPROF 堆转储缺少字段?

scala - 从 sbt 运行 hprof

java - "can not get class data for sun/java2d/Disposer"

java - 根据 Eclipse 中通过 JAXB 和 XSD 构建选项生成的 xsd 文件验证 xml

java - 加载包含另一个 JPanel 的 JPanel

java - 如何在 vaadin 中为自定义图标字体生成字体枚举

android - 我无法在 Lollipop 上将 Android HPROF 转换为标准 HPROF

java - 将 JVisualVM 快照中的 "objects allocated"与 Java 堆转储中的实例数进行比较