我的 Activity 保留了一定数量的引用,用于在 Map 对象中预览来自相机的图像。这需要大量内存。我正在使用以下方法监控内存使用情况:
Runtime runtime = Runtime.getRuntime();
long allocated = runtime.totalMemory();
long free = runtime.freeMemory();
long used = allocated - free;
当我终止我的应用程序(后退键)时, Activity 将被销毁。当我再次启动我的应用程序时,我可以看到内存没有被清除。 “已用”数字从相同的值开始,然后随着新帧的到来而上升。
当我在“Dump HPROF”后查看“dominator_tree”时,我可以看到我的 Activity 的两个实例,都占用了大量内存。
当我覆盖 onDestroy() 和 clear() 预览帧 map 对象时,这似乎没有发生。
我可能在这里遗漏了一些东西,但我认为在我的 Activity 被销毁后(在垃圾收集过程之后)应该释放所有内存,为什么我必须手动清除() map ?我创建的其他对象似乎不需要这个。
我尝试设置 android:launchMode="singleInstance"但这似乎没有任何影响。
谢谢!
最佳答案
为了了解发生了什么,在支配树中,在您的 Activity 上单击右键,查找 GC ROOT 的路径并选择排除弱/软/幻影引用的选项。这会让您了解为什么系统无法破坏您的 Activity (如果您正在泄漏某些东西或其他东西)
关于android - Activity 被销毁后对象仍在内存中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7764133/