Почему у моего приложения меньше кучи памяти, чем у других? - PullRequest
3 голосов
/ 18 ноября 2010

Мой вопрос может показаться наивным, но я не знаю, как правильно его сформулировать.Проблема в том, что я создаю и использую большие массивы простых типов в своем приложении.И я получаю такие ошибки, как:

ERROR/dalvikvm-heap(1763): Out of memory on a 7907344-byte allocation.

Да, он достаточно большой, но инструменты управления задачами утверждают, что мое приложение использует только 30 МБ памяти, в то время как другие одновременно используют 50 МБ и даже 110 МБ (видел) и в системе по-прежнему остается 190 МБ свободной памяти (не системных приложений, а других установленных мной обычных приложений).Если при запуске всем приложениям предоставляется одинаковый размер кучи, как они могут стать такими большими?

Ответы [ 3 ]

4 голосов
/ 29 ноября 2010

Максимальный размер кучи приложения Android будет зависеть от устройства, на котором оно запущено. Для ранних устройств максимальный размер кучи составлял 16 МБ, но для некоторых более поздних устройств он может составлять 24 МБ или даже 32 МБ.

Это свойство виртуальной машины Dalvik на каждом устройстве, которое нельзя изменить (не перестраивая Android из исходного кода).

Вы можете запросить «класс памяти для каждого приложения» с помощью ActivityManager.getMemoryClass(), который выглядит как фигура, которая не совсем не связана с размером кучи.

Приложения могут использовать память, которой нет в куче, но 100+ МБ кажутся удивительно большими.

Если вы хотите узнать об анализе использования памяти на Android, вы не можете сделать лучше, чем этот ответ о переполнении стека Дайан Хэкборн , которая является одним из разработчиков Android в Google. Короче говоря, он говорит, что анализ использования памяти очень труден, и вы должны взять любые цифры, которые у вас есть, с щепоткой соли.

0 голосов
/ 29 ноября 2010

Мы все знаем, что по умолчанию в java есть система сборки мусора, но на каком-то уровне нам нужно очистить или очистить какой-то объект.

И вы также можете установить или настроить размер кучи для JVM.

0 голосов
/ 18 ноября 2010

Вы пытались настроить размер кучи? Для этого используйте следующие опции.

-Xms установить начальный размер кучи Java -Xmx установить максимальный размер кучи Java

Для получения дополнительной помощи запустите java -X

Пример: java -Xms20m -xMX100m -cp. MyMain

Удачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...