在设备挂起之前,Android 设备 RAM 使用量会增加,但应用程序内存不会增加

标签 android memory memory-leaks ram

我有一个应用程序加载 Activity A(由 ListFragment 组成),从 A 加载 Activity B。如果我继续在这两个 Activity 之间切换,我会看到每次切换时设备 RAM 都会增加 10 MB。在三星设备上,我们可以使用任务管理器来“清除内存”,这基本上会清除 RAM,但即使我这样做,内存也不会被清除。即使我强制停止应用程序并再次清除内存,它也不会下来.. 最后在这两个 Activity 之间切换后,手机速度变慢并在 RAM 已满后挂起,我必须重新启动设备。有趣的是,当使用“dumpsys meminfo”检查时,应用程序的内存不会超过 14-15 mb。我的应用程序没有 OOM。 这种行为在 samsung galaxy tab 2 4.0、galaxy grand、ace duos 上观察到。在 Nexus 7 或 Galaxy Nexus 等 Nexus 设备上未观察到它。 为什么 RAM 不断增加,但应用程序内存却没有?这是因为任何 BITMAP 泄漏吗?我尝试使用 MAT,但我才刚刚开始使用它,所以可能需要一些时间来弄清楚如何识别泄漏。有什么猜测吗?

编辑 我在启动这两个 Activity 时使用了 Intent.FLAG_ACTIVITY_REORDER_TO_FRONT 标志。

最佳答案

当你切换 Activity 时,你应该在 Intent 上设置标志:

Intent.FLAG_ACTIVITY_REORDER_TO_FRONT

那样的话,如果 Activity 已经在堆栈中,它将切换到它而不是开始一个新的 Activity。

关于在设备挂起之前,Android 设备 RAM 使用量会增加,但应用程序内存不会增加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15459648/

相关文章:

android - 如何在android中滑动以关闭DialogFragment

android - Kotlin - 将数据从 Activity 发送回 fragment

java - 我应该通过 response.getOutputStream() 显式关闭 ZipOutputStream 吗?

javascript - 为什么这个 javascript 会因内存使用而导致浏览器崩溃?

java - 使用自定义主体参数名称改造 POST

java - 日期选择器的 Android IllegalArgumentException

python - 优化Python中的内存使用: del obj or gc.收集()?

memory - VB6 内存限制

ios - Unwind segue (D->B) 不释放 C

swift - 图像在 swift 应用程序中使用了大量 ram