我正在阅读Android中的OutOfMemory错误,这是在Android内存不足时出现的。我们是否知道,如果我的应用程序消耗了一些x MB
内存,那么它会给出OutOfMemory错误? Android是否为每个应用分配了特定数量的内存,具体取决于设备和总物理内存?
例如,我安装了2GB RAM的设备,OS占用500MB,其他应用占用500MB。现在我的应用程序有1048MB的内存可供运行。那么在这种特殊情况下,系统会给出OutOfMemory?
答案 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
希望能帮到你:)。