Максимальный размер родной кучи на Android? - PullRequest
12 голосов
/ 04 мая 2011

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

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

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

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

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

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

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

1 Ответ

4 голосов
/ 05 мая 2011

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

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

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

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