Android应用程序可以分配的最大本机内存

11

VM堆的大小不能超过16mb、24mb、32mb,具体取决于手机的型号。 但本机堆的最大大小是多少呢?当应用程序处于前台时,可以分配多少本机内存。

谢谢。

3个回答

13

从技术上讲,NDK中没有限制。某人之前曾问过这个问题,并被引用了此android-ndk Groups线程。一个相关的引用:

"另外,鉴于这是NDK列表,实际上并没有对您施加限制,因为它仅适用于Java堆。在本地堆中,分配没有限制..."

Dianne Hackborn

她还说,不应滥用这个功能,否则应用程序可能会被终止。


在Android O上,内存使用方面似乎发生了变化:我认为位图存储在本地内存中。你会如何处理它?例如,你会如何决定mem-cache的大小?我在这里询问过:https://dev59.com/NOk5XIcBkEYKwwoY8efo - android developer

2

adb shell dumpsys meminfo PACKAGENAME会提供您的应用程序的本地和dalvik内存使用情况。


2

这个问题没有简单的答案;你可以使用设备剩余的内存,减去其他程序正在使用的内存。当 Android 认为内存不足时,它会开始杀死后台任务,因此这是一个软限制。大多数设备没有交换空间。您可以通过 android.app.ActivityManager.MemoryInfo 在 Dalvik 内部获取有关设备内存的一些统计信息(我假设存在 NDK 等效物)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接