2013-03-04 105 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文件爲每個設備預先定義的堆大小設置。