Одна из рекламируемых функций ART runtime в Android 5.0+ - это сжатие кучи, чтобы уменьшить фрагментацию кучи. Фрагментированная куча может получить OutOfMemoryErrors
намного проще, так как может быть не один непрерывный свободный блок памяти, достаточно большой для ваших потребностей, даже если куча в целом имеет достаточно свободного места.
Я понимаю, что это происходит, когда приложение перемещается на задний план, на основе презентаций конференции Google и тому подобного. Однако единственное утверждение, которое я могу найти на нем в в документации, говорит:
Однородное уплотнение пространства - это свободное пространство для свободного пространства в свободном списке, которое обычно происходит, когда приложение перемещается в состояние незаметного процесса паузы. Основными причинами этого являются сокращение использования ОЗУ и дефрагментация кучи.
Непонятно, что означает "пауза незаметного состояния процесса", технически.
Предположим, что на данный момент приложение не имеет каких-либо операций переднего плана. Есть ли что-нибудь, что мог сделать разработчик, что может помешать сжатию кучи для этого процесса приложения? Например, имеет ли компрессия кучи блока переднего плана?