Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/225.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 Android Studio堆转储(.hprof)查看器是否显示不正确的计数?_Java_Android_Garbage Collection_Hprof - Fatal编程技术网

Java Android Studio堆转储(.hprof)查看器是否显示不正确的计数?

Java Android Studio堆转储(.hprof)查看器是否显示不正确的计数?,java,android,garbage-collection,hprof,Java,Android,Garbage Collection,Hprof,我为这个实验启动了一个全新的样本项目。该应用程序有一个活动 此时,我运行应用程序并转储java堆。结果如下: 太好了一切看起来都是正确的。“总计数”和“堆计数”为1。正是我所期望的 让我们旋转我的设备3次。此时,我仍然希望只看到1个MainActivity,但我知道已经创建了4个。让我们看一下。 嗯。。。真奇怪。它正在显示4。怎么可能呢?也许活动还在那里。未引用的。。。但他们还没有被发现。让我们强制执行GC并执行另一个堆转储 奇怪。现在还是4点。这就是我迷路的地方。听起来总计数或堆计数应该

我为这个实验启动了一个全新的样本项目。该应用程序有一个活动

此时,我运行应用程序并转储java堆。结果如下:

太好了一切看起来都是正确的。“总计数”和“堆计数”为1。正是我所期望的

让我们旋转我的设备3次。此时,我仍然希望只看到1个MainActivity,但我知道已经创建了4个。让我们看一下。

嗯。。。真奇怪。它正在显示4。怎么可能呢?也许活动还在那里。未引用的。。。但他们还没有被发现。让我们强制执行GC并执行另一个堆转储

奇怪。现在还是4点。这就是我迷路的地方。听起来总计数或堆计数应该为1。它只是保留了主要活动的所有参考资料吗?那是个漏洞吗?观众错了吗

Total Count(根据文档)是“未完成的实例总数”

也许是堆计数?“所选堆中的实例数。”这听起来更像是我想要的。我想要gc根的实例数(真实实例)


有人知道为什么会发生这种情况吗?

您可以使用堆转储资源管理器查看引用活动实例的内容。@Commonware是另一个程序吗?我疯了吗?或者我认为这两列中的数字应该只有1是正确的吗?“这是另一个程序吗?”--不,这是上面的截图。假设你还有我的书,读吧。而更高版本则在Android Studio堆分析器上提供了素材。“我疯了吗?”——我没有资格回答这个问题“或者我认为这两列中的数字应该只有1,这是对的?”——应该是。然而,你是在责怪这个工具。该工具中完全可能存在缺陷。您通过该工具输入的代码中也完全可能存在bug。