我为这个实验开了一个全新的示例项目。该应用有一项活动。
此时我运行应用程序并转储java堆。结果如下所示:
太棒了!一切看起来都很正确。 “总计数”和“堆数”均为1.正是我的预期。
让我们旋转我的设备3次。在这一点上,我仍然希望只看到1个MainActivity,但我知道已经创建了4个。我们来看看。
嗯......这很奇怪。它显示4.怎么可能?也许活动仍在那里。没有引用......但他们还没有GC。让我们强制GC并进行另一次堆转储。奇怪。它仍然是4.这是我失去的地方。听起来总计数或堆计数应该是1.它只是保留MainActivity的每个参考吗?这是泄漏吗?观众错了吗?
总计数(根据文档)是“未完成的实例总数。”
也许堆数? “所选堆中的实例数。”那听起来更像是我想要的东西。我想要gc根的实例数(实例)。
有谁知道为什么会这样?