android – 活动被破坏后,对象仍在内存中

我的活动保留了一定数量的引用,以便在Map对象中预览来自摄像机的图像.这需要大量的内存.我使用以下方法监控内存使用情况:

    Runtime runtime = Runtime.getRuntime();
    long allocated = runtime.totalMemory();
    long free = runtime.freeMemory();
    long used = allocated  - free;

当我杀死我的应用程序(后退键)时,活动被销毁.当我再次启动我的应用程序时,我可以看到内存未被清除. “used”图形以相同的值开始,然后随着新帧的到达而上升.

当我在“转储HPROF”之后查看“dominator_tree”时,我可以看到我的活动的两个实例,都占用了大量内存.

当我覆盖onDestroy()并清除()预览帧映射对象时,这似乎不会发生.

我可能在这里遗漏了一些东西,但我认为在我的活动被销毁之后所有内存都应该被解除分配(在垃圾收集过程之后),为什么我必须手动清除()地图?我创建的其他对象似乎并不需要这样.

我尝试设置android:launchMode =“singleInstance”,但这似乎没有任何影响.

谢谢!

解决方法:

为了理解正在发生的事情,在统治者树中,在您的活动上单击右键,查找PATH到GC ROOT并选择排除弱/软/幻像引用的选项.这会让你知道为什么系统不会破坏你的活动(如果你泄漏的东西或其他什么)

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...