我正在尝试分析 Android
应用程序的内存使用情况。我这样做是使用
adb shell dumpsys meminfo <package name>
我的应用只有一个Activity
,我可能会重复以下步骤十几次:
- 打开应用程序;
- 使用后退按钮退出
执行此操作十几次后,dumpsys
显示我的 Activities
的大约 1-2 个实例仍在内存中。在我点击 adb dumpsys
几次后,Activity
计数降至零。这是正常的吗?如果是泄漏,我预计 Activity
计数不会降至零。这是否意味着 GC
缓慢地占用 Activity
对象的内存?
最佳答案
Does that mean GC claims the memory of the activity objects slowly?
通过按后退按钮完成 Activity
并不意味着其实例将立即被终止并进行内存 GC
处理。 Activity
的 onDestroy()
方法不是“终结器”。当启动一个新的 Activity 实例时,“旧”实例仍然位于内存中(如 reference ),可能会遇到这种情况。
If it is a leak I don't expect the activity count to go down to zero.
如果您看到应用程序的进程正在运行,则这不是泄漏,因为“Activity 计数降至零”。
After I hit adb dumpsys for a couple of times the activity count goes down to zero. Is this normal?
是的,由于上述原因。
关于android - GC 是否保证释放未使用 Activity 的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37891798/