Я не могу понять, что такое размер кучи приложений для Android. Является ли общая память maxumum я могу выделить как из java, так и из собственного кода? Если да, то почему на моем google nexus S. этот код
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
И я могу легко выделить, скажем, 74 МБ
int size = 1024*1024*74; char* s = new char[size];
Ну, размер кучи на самом деле является концепцией программирования, намного больше, чем Android. Вы можете прочитать об этом здесь , но это действительно (короткая история), сколько памяти использует виртуальная машина, и она выделена независимо от вашего приложения.
Память, выделенная для вашего приложения, распределяется динамически. Итак, если вы попросите свое приложение выделить больше памяти, вы увидите, что оно растет. Но он не может расти бесконечно.
Размер кучи – это объем ОЗУ, который можно выделить. Каждое приложение находится на крошечной виртуальной машине Dalvik. Каждая виртуальная машина будет иметь выделенное пространство кучи.
Кроме того, в файле /system/build.prop
для каждого устройства есть предопределенные настройки размера кучи.