I am developing an Android application. Is it possible to allocate RAM for that application? For example: When my application opens it must allocate 30MB RAM. Mention the APIs.
2 回答
不,你不能。这完全由系统管理。
事实上,系统会在需要时随时增加分配给您的应用程序的堆。但是,应用程序对内存消耗有限制。要检索此限制,您可以使用以下命令:
/* Expressed in Megabytes */
Runtime.getRuntime().maxMemory() / 1024 / 1024
最后,您似乎可以在清单中指定您的应用程序可能比普通应用程序使用更多的内存,方法是添加:
如果您使用此标记,请查看ActivityManager.getLargeMemoryClass()以验证分配给您的应用程序的值。返回值以兆字节表示。它可以高于ActivityManager.getMemoryClass()返回的值,前提是您设备的内存可用性允许。
不,你不能那样做。分配给应用程序的内存特定于设备。我强烈建议您观看Google IO 2011 的内存管理视频,以更深入地了解该主题。
此外,请查看 logcat 中的调试日志,以了解分配给您的应用程序的内存量以及剩余的内存量。
01-13 14:37:54.538: D/dalvikvm(27390): GC_CONCURRENT 释放 393K,47% 释放 3377K/6279K,外部 2003K/2199K,暂停 2ms+3ms
我也不推荐使用 largeHeap="true" 。就像@Halim 在他的帖子中指出的那样,额外的内存可能不会分配给您的应用程序。
启用此功能也不能保证可用内存的固定增加,因为某些设备受到其总可用内存的限制。
专注于对 30MB 内存的需求以及如何减少它。