Ответ 1
Используйте ActivityManager.getMemoryClass() и ActivityManager.getLargeMemoryClass(), чтобы проверить приближенные значения, присвоенные ваше приложение.
Я разрабатываю очень загружающее память приложение и хочу использовать largeHeap-Tag, который должен придать приложению немного больше памяти. Независимо от того, что я установил для этого тега в AndroidManifest.xml, это не имеет никакого значения для фактической памяти, которую я получил. Я читаю свою максимальную память следующим образом:
Log.v("Utils","Max Mem in MB:"+(Runtime.getRuntime().maxMemory()/1024/1024));
Мой манифест выглядит примерно так:
<application android:label="@string/app_name" android:hardwareAccelerated="true" android:largeHeap="true" android:debuggable="true">
<activity android:name=".EntryActivity" android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
Я запускаю 3.1 в эмуляторе, вывод моего журнала выше всегда 48 МБ. Может ли кто-нибудь помочь?
Используйте ActivityManager.getMemoryClass() и ActivityManager.getLargeMemoryClass(), чтобы проверить приближенные значения, присвоенные ваше приложение.
Действительно, большая куча будет такой же, как и обычная куча, пока ваше приложение не потребует больше памяти для задачи. Ваша виртуальная машина отобразит такие сообщения на консоли:
06-30 15:38:14.770: INFO/dalvikvm-heap(9075): Grow heap (frag case) to 42.365MB for 6152016-byte allocation
06-30 15:38:16.680: INFO/dalvikvm-heap(9075): Grow heap (frag case) to 39.739MB for 3517456-byte allocation