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

Максимальный размер встроенной кучи на Android?

Если я правильно понял, процесс андроида имеет две кучи - одну управляемую VM и одну нативную.

Размер кучи VM не может превышать 16 МБ (по крайней мере, это значение может быть выше на некоторых телефонах).

Но как насчет максимального размера родной кучи?

Предел 16 мб не является жестким пределом в том, что приложение может выделять более 16 МБ через NDK, но ОС начнет убивать другие процессы и, возможно, процесс переднего плана, когда большой объем памяти используется.

Когда ОС начинает вести себя так? Когда размер кучи нативной кучи + VM превышает 16 МБ?

Debug.getNativeHeapSize() дает размер встроенной кучи, но есть ли функция для проверки объединенных значений кучи встроенной + VM?

Любопытно услышать от кого-то, кто знает, как это работает!

4b9b3361

Ответ 1

В управлении памятью Android нет "линии смерти". Когда система должна убивать процессы для восстановления памяти, она учитывает ряд различных факторов, включая важность процесса (определяемую такими факторами, как, будь то на переднем плане или предоставление услуг для приложения переднего плана), и сколько памяти используя.

Если ваш процесс простаивает и сидит на большей памяти, чем что-либо еще, он скорее всего будет убит первым.

Точный алгоритм со временем изменился, и система не дает никаких гарантий относительно конкретного поведения.