2013-03-04 69 views
3

我无法理解什么是Android应用程序堆大小。 是否可以从java和frome本机代码分配全部最大内存?如果是的话,那么为什么在我的谷歌Nexus S.这个代码Android VM堆大小

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

dysplays 50331648 = 48MB 但dumpsys meminfo中显示 本土13 16 12 84028 83457 18

,我可以很容易地分配74MB说

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

VM堆大小不适用于本地分配。 – 2013-03-04 14:15:28

回答

6

好,堆的大小实际上是一种编程概念,远远超过它的一个Android一个。您可以阅读关于它的文章here,但它确实(短篇小说)虚拟机使用了多少内存,并且它是独立于您的应用程序分配的。

分配给您的应用程序的内存动态分配。所以,如果你问你的应用程序分配更多的内存,你会看到它增长。但它无法无限增长。

1

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

,还有是内部/system/build.prop文件为每个设备预先定义的堆大小设置。