java - Java:为什么在runhprof输出中显示多个对象?

原文 标签 java hprof

我对runhprof的输出感到好奇吗?我主要关注内存部分。看起来有多个相同类别的条目。为什么会这样。

有没有一种方法可以让hprof打印出一个特定类(该类的实例)在内存中占用了多少内存。每个类一个值。

另外,您在“帽子”旁边使用哪些工具来分析输出?

我用jvm arg运行了Java命令:

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

这是输出的简短摘要。一些类在输出中多次列出。

SITES BEGIN(按实时字节排序)2009年7月28日星期二19:33:41
          实时分配的堆栈类百分比
 排名自我累积字节objs字节objs跟踪名称
    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字符[]
        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字节[]
        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字节[]

最佳答案

Eclipse Memory Analyzer非常好。非常快速地加载转储文件,生成有关堆转储的许多不错的报告,让您使用类似于SQL的语言在转储中查询对象/类。爱它。

相关文章:

java - 杰克逊JSON解析器异常

java - 如何从Android中的字符串数组获取随机值?

java - Hadoop HPROF分析没有编写CPU样本

java - 将JVisualVM快照中的“分配的对象”与Java堆转储中的实例数进行比较

java - 如何获取变量填充android中的ram

java - Restlet:所有500个错误的日志堆栈跟踪

java - 获取游戏中对象的位置

android - Android Studio HPROF参考树元素颜色代表什么?

java - 为什么hprof文件的大小比给jvm的内存量小得多

java - jvisualvm:卡在“加载堆转储”屏幕上