gpt4 book ai didi

java - 为什么android在完成 Activity 后不清理内存?

转载 作者:太空宇宙 更新时间:2023-11-03 11:05:50 25 4
gpt4 key购买 nike

在我的例子中,我有两个名为 A(主要 Activity )和 B(子 Activity )的 Activity 。A 将启动 B(B 使用 Glide 图像库加载一些图像)。

如果我使用 android 内存监视器获取内存分配,我可以清楚地看到内存分配增长。这完全没问题,因为我们正在 Activity B.Image Attached 中做一些与图像相关的事情。

enter image description here

所以我的问题是,如果我在 Activity B 中按下后退按钮,它将进入 Activity A,并且分配的内存不会被清除。内存分配量仍然相同。

这是正常的 android 行为吗?

如果不能,我该如何手动清理内存?

我手动运行 GC 如下,但同样的结果没有运气 :(。

在 Activity B中

    @Override
protected void onDestroy() {
super.onDestroy();
System.gc();
}

最佳答案

1) OnDestroyfinish(); 被调用时被调用,简单地按下后退按钮不会调用这个方法,除非你对其进行编程。

2) onDestroy 中的 System.gc(); 将不起作用,因为您的 activity B 时仍处于 Activity 状态onDestroy。一旦 activity B 完全终止,您应该从其他 Activity 调用它。

3) 如果您将 Activity 上下文泄露给长期存在的对象/线程/等,即使调用 onDestroy Activity 也会保留在内存中。 (内存泄漏)

注意 调用System.gc(); 不会简单地释放内存,它可能不会执行 GC,具体视情况而定。在此处查看详细信息:Why is it bad practice to call System.gc()?

关于java - 为什么android在完成 Activity 后不清理内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33834404/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com