Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java HPROF堆转储缺少字段?_Java_Heap Dump_Hprof - Fatal编程技术网

Java HPROF堆转储缺少字段?

Java HPROF堆转储缺少字段?,java,heap-dump,hprof,Java,Heap Dump,Hprof,我正在使用Eclipse内存分析器查看HPROF文件。它为同一类的不同实例显示不同数量的字段: 似乎缺少的字段可能从未分配给,但缺少的字段中的值是多少?它们是“零”值还是来自字段初始化器的值 编辑: JVM是Java热点(TM)64位服务器虚拟机(构建25.40-b25,混合模式) 编辑2: 似乎缺少的字段不是“零”(通过调试确认),但可能从未分配给 下面的OQL查询显示Eclipse内存分析器实际上知道这些字段中的实际值,但只是选择不显示它们 根据对象的所有字段都存储在转储中,因此可以知道对

我正在使用Eclipse内存分析器查看HPROF文件。它为同一类的不同实例显示不同数量的字段:

似乎缺少的字段可能从未分配给,但缺少的字段中的值是多少?它们是“零”值还是来自字段初始化器的值

编辑:

JVM是Java热点(TM)64位服务器虚拟机(构建25.40-b25,混合模式)

编辑2:

似乎缺少的字段不是“零”(通过调试确认),但可能从未分配给

下面的OQL查询显示Eclipse内存分析器实际上知道这些字段中的实际值,但只是选择不显示它们

根据对象的所有字段都存储在转储中,因此可以知道对象的所有字段的值


OQL窗口

对于OQL,将显示除具有空值的引用以外的所有引用


支配树窗口 对于me,MAT在控制树窗口中显示对象的所有属性

由于要使用非循环图,MAT确定closeController拥有URLJarFile对象,并且不在主窗口中显示此属性

此外,这意味着,如果有多个对特定对象的强引用,并且无法识别对象的所有者,则该对象将不会显示在支配者树中

考虑URLJAR文件中的name属性:

如果选择“List object->with incoming references”(列表对象->with incoming references),我们可以看到该字符串是从多个对象引用的:


问题是我所查看的视图只应列出对象引用,因此未显示
null
字段或基本值


解决方案是添加“Inspector”视图或切换到专用的“Memory Analysis”透视图,该透视图将显示所选每个实例的实际字段,如@Taky的屏幕截图所示。

您在谈论哪些
字段
?这里我看到所有条目都有两个字段each@AswinMurugesh屏幕截图中只有两个实例。一个列出了2个字段,另一个列出了9!!从技术上讲,这与支配者功能无关,因为我的屏幕截图清楚地显示我使用的是传出的引用,而不是传入的引用。显然,应该可以确定地知道给定对象引用了哪些对象。但您的屏幕截图引导我找到了正确的方向。但我认为您在编辑2之前使用的是支配树。对于OQL,我放了一个屏幕截图来解释你的情况。