当Android给出OutOfMemory异常时?

时间:2015-05-06 06:23:14

标签: android memory out-of-memory

我正在阅读Android中的OutOfMemory错误,这是在Android内存不足时出现的。我们是否知道,如果我的应用程序消耗了一些x MB内存,那么它会给出OutOfMemory错误? Android是否为每个应用分配了特定数量的内存,具体取决于设备和总物理内存?

例如,我安装了2GB RAM的设备,OS占用500MB,其他应用占用500MB。现在我的应用程序有1048MB的内存可供运行。那么在这种特殊情况下,系统会给出OutOfMemory?

3 个答案:

答案 0 :(得分:1)

每个应用都有一些可用于堆分配的内存限制。它对于不同的手机有所不同(您也可以在清单中增加它)。 This answer提供了很多详细信息,给出了一些模型和设置的具体数据。

至于如何确定:

  

它往往更多地基于屏幕分辨率,因为更高分辨率的屏幕往往想要操纵更大的位图,因此Google提出了堆大小建议,希望设备制造商能够遵守。   CommonsWare

答案 1 :(得分:0)

谷歌本身Here

最能描述您所寻找的内容


要获得可以使用的内存量,您可以这样做:

ActivityManager manager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
int memoryClass = manager.getMemoryClass();
Log.v("onCreate", "memoryClass:" + Integer.toString(memoryClass));

答案 2 :(得分:0)

由堆大小引起的OutOfMemory异常,而不是RAM。

  

为了维持功能性的多任务环境,Android设置了一个   每个应用程序的堆大小的硬限制。确切的堆大小限制   根据设备可用的RAM量,设备之间会有所不同   总体。如果您的应用已达到堆容量并尝试   分配更多内存,它将收到OutOfMemoryError。

这是一个有用的链接:https://developer.android.com/training/articles/memory.html

希望能帮到你:)。