Java Android虚拟机堆大小
我无法理解android应用程序堆的大小。 是不是我可以从java和frome本地代码中分配的最大内存?如果是,那么为什么要在我的谷歌nexus S上使用此代码Java Android虚拟机堆大小,java,android,memory,Java,Android,Memory,我无法理解android应用程序堆的大小。 是不是我可以从java和frome本地代码中分配的最大内存?如果是,那么为什么要在我的谷歌nexus S上使用此代码 Runtime rt = Runtime.getRuntime(); long maxMemory = rt.maxMemory(); Log.v("onCreate", "maxMemory:" + Long.toString(maxMemory)); 数据集50331648=48MB 但是dumpsysmeminfo显示 本地人1
Runtime rt = Runtime.getRuntime();
long maxMemory = rt.maxMemory();
Log.v("onCreate", "maxMemory:" + Long.toString(maxMemory));
数据集50331648=48MB
但是dumpsysmeminfo显示
本地人13 16 12 84028 83457 18
我可以很容易地分配,比如74MB
int size = 1024*1024*74;
char* s = new char[size];
嗯,堆大小实际上是一个编程概念,比Android的要多得多。你可以读到它,但事实上(简而言之)虚拟机使用了多少内存,它是独立于你的应用程序分配的
分配给应用程序的内存是动态分配的。所以,如果你要求你的应用程序分配更多的内存,你会看到它的增长。但它不能无限期地增长 堆大小是指可以分配的RAM量。每个应用程序都在一个小小的Dalvik虚拟机上。每个VM将分配一些堆空间
而且,每个设备的
/system/build.prop
文件中都有预定义的堆大小设置。VM堆大小不适用于本机分配。