Подтвердить что ты не робот

Android вырастает в куче

Я работаю над приложением для потоковой передачи музыки из Интернета... Мое приложение делает много вещей и структурировано таким образом: у меня есть представление в виде табуляции, и каждое представление выделено в памяти, поэтому каждый раз, когда я просматриваю вкладки я снова найти предыдущий статус (каждая вкладка также может открыть веб-просмотр, чтобы найти информацию о песнях, новостях и т.д. в Интернете). Все это увеличивает занятость памяти, но делает приложение очень удобным для пользователя... После того, как вы обратили внимание на то, чтобы избежать утечек памяти после в руководстве Android, я попытался посмотреть на занятие кучи, и я обнаружил, что мое приложение выделяет максимум 3,5 МБ памяти, а размер кучи - 4,5 - 4,6 МБ... Я работаю над эмулятором.. Они не такие я думаю, но иногда мое приложение перезапускало основание в LogCat странным сообщением вроде

Grow heap ( frag case ) to 3.373 for 19764-byte allocation

Что это? проблема с эмулятором? или что-то другое? Я использую слишком много памяти?

Заранее спасибо за любую помощь:)

4b9b3361

Ответ 1

Максимальный размер кучи зависит от устройства (вы можете получить это значение, вызвав Runtime.getRuntime().maxMemory()), но, вероятно, около 32 МБ. Чтобы сохранить память, Android не выделяет максимальную память для каждого приложения автоматически. Вместо этого он ждет, пока приложение не потребует больше памяти, а затем даст ему больше места для кучи по мере необходимости, пока не достигнет максимума. Я считаю, что сообщение Grow heap вы видите.

Если вы занимаетесь большим объемом выделения и освобождения памяти, вы можете столкнуться с проблемами фрагментации. В Wikipedia есть достойное описание здесь, но в основном это означает, что у вас может быть доступная доступная память, только не все в одном куске. Отсюда необходимость выращивания кучи.

Итак, чтобы ответить на ваши вопросы, возможно, это не проблема эмулятора, это просто характер вашей программы, который звучит немного тяжело. Однако это не плохо. Я не думаю, что использование 3-5MB для нескольких вкладок с webviews слишком много.