Android VM堆大小

时间:2013-03-04 14:06:45

标签: java android memory

我无法理解什么是android app堆大小。 它是整体最大内存,我可以从java和frome本机代码分配?如果是,那么为什么在我的google nexus S.此代码

Runtime rt = Runtime.getRuntime();
long maxMemory = rt.maxMemory();
Log.v("onCreate", "maxMemory:" + Long.toString(maxMemory));

发音不足50331648 = 48MB 但是dumpsys meminfo显示  Native 13 16 12 84028 83457 18

我可以轻松分配说74MB

int size = 1024*1024*74;
char* s = new char[size];

2 个答案:

答案 0 :(得分:6)

嗯,堆大小实际上是一个编程概念,远远超过它的Android。您可以阅读它here,但它确实(简短的故事)VM正在使用多少内存,并且它是独立于您的应用程序分配的。

分配给您的应用程序的内存是动态分配的。因此,如果您要求您的应用分配更多内存,您会看到它增长。但它无法无限增长。

答案 1 :(得分:1)

堆大小是可以分配的RAM量。每个应用程序都在一个小型Dalvik虚拟机上。每个VM都会分配一些堆空间。

并且,每个设备的/system/build.prop文件中都有预定义的堆大小设置。