我的活动保留了一定数量的引用,以便在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并选择排除弱/软/幻像引用的选项.这会让你知道为什么系统不会破坏你的活动(如果你泄漏的东西或其他什么)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。