我的活动保留了一定数量的引用,以便在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

相关文章推荐

添加新评论,含*的栏目为必填