java – 为什么android在完成活动后没有清理内存?
发布时间:2020-12-15 02:11:34 所属栏目:Java 来源:网络整理
导读:在我的情况下,我有两个名为A(主要活动)和B(儿童活动)的活动. A将开始B(B使用Glide图像库具有一些图像加载内容). 如果我使用android内存监视器获得内存分配,我可以清楚地看到内存分配增长.这是完全正常的,因为我们在活动中做了一些与图像相关的事情B.Image附
在我的情况下,我有两个名为A(主要活动)和B(儿童活动)的活动.
A将开始B(B使用Glide图像库具有一些图像加载内容). 如果我使用android内存监视器获得内存分配,我可以清楚地看到内存分配增长.这是完全正常的,因为我们在活动中做了一些与图像相关的事情B.Image附加. 所以我的问题是如果我按下活动B中的按钮它将进入活动A并且分配的内存将不会被清除.内存分配仍将保持相同的数量. 这是正常的Android行为吗? 如果没有,我怎样才能手动清理内存? 我手动运行GC如下,但同样的结果没有运气:(. 在活动B中 @Override protected void onDestroy() { super.onDestroy(); System.gc(); } 解决方法
1)在finish()时调用OnDestroy;被调用,只需按下后退按钮就不会调用此方法,除非您对其进行编程.
2)System.gc();在onDestroy中将无法工作,因为您的活动B仍在onDestroy中处于活动状态.一旦活动B完全终止,您应该从其他活动中调用此方法. 3)如果将活动上下文泄漏到长期存在的对象/线程/等,则即使调用onDestroy,活动也将保留在内存中. (内存泄漏) 注意:调用System.gc();不仅仅是释放你的记忆,它可能不会根据情况执行GC.详情请见:Why is it bad practice to call System.gc()? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |