首页 > 解决方案 > Android 中的可用 RAM

问题描述

我想知道一些允许释放不再需要的已用内存的简单代码,就像许多内存释放应用程序一样。

是的,我知道这不应该是必要的,因为 Android 自己管理内存,但看起来在我的应用程序中导致非预期行为的原因是有很多打开的应用程序占用内存,所以我认为这是值得的尝试,并检查错误是否不再发生。

谁能给我这样的代码?我找不到任何东西。

标签: androidram

解决方案


我从这篇文章中了解到,您不需要做任何事情来回收内存,但是您可以让垃圾收集在特定时间更快地发生。这对我来说意味着任何数组、列表、大对象等都应该null在你完成后设置。当然,这应该在您离开方法或视图时自动完成,但如果您处于长时间运行的循环中或停留在有大量数据的页面上,您可以更快地清理它。

Android 运行时 (ART) 和 Dalvik 虚拟机使用分页和内存映射 (mmapping) 来管理内存。这意味着应用程序修改的任何内存——无论是通过分配新对象还是触摸映射的页面——都保留在 RAM 中并且不能被调出。从应用程序释放内存的唯一方法是释放应用程序持有的对象引用,使内存可供垃圾收集器使用。这是一个例外:如果系统想要在其他地方使用该内存,则可以将任何未经修改的文件(例如代码)从 RAM 中调出。

https://developer.android.com/topic/performance/memory-overview

您还可以检查您的内存使用情况,看看这是否真的是问题所在。这在上面的文章中有链接,但我想我会把它弹出来这样更容易注意到。

https://developer.android.com/reference/android/app/ActivityManager.html#getMemoryClass()


推荐阅读