Android,返回按钮会释放Activity的内存吗?

5
我制作了一个简单的应用程序来测试Android的内存。 它有两个活动,A和B。 A是一个简单的活动,有一个按钮可以启动B。 B由一个相当大的图像组成(jpg,mdpi中的1024x768像素)
当我使用DDMS监视这个过程时,从A到B移动时,堆会按预期增加。 当我在B上按下(硬件或使用super.onBackPressed()的软件)按钮并再次回到A时,即使调用垃圾收集,堆也不会再次缩小。这是否是预期的?在进程的生命周期内,B占用的内存是否会被释放?
2个回答

3

onBackPressed()方法只是从BackStack中弹出您的B Activity,然后您的Activity将不再对您可见(onStop()被调用),但它的进程直到操作系统需要内存才会被杀死。


我猜这个和丹的回答都是正确的。我会假设如果堆空间在第二次访问活动B时每次增加,那很可能意味着存在内存泄漏。 - Jonny
如果在从A切换到B并返回后遇到OutOfMemoryException,则应该寻找内存泄漏。 - Dan

1
请注意,垃圾收集器的工作是“不确定性的”。特别地,即使调用垃圾收集器也不能保证内存完全释放。只有在请求更多内存时才能保证内存被释放。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接