加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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附加.

enter image description here

所以我的问题是如果我按下活动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()?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读