Увеличение родной памяти - PullRequest
       32

Увеличение родной памяти

0 голосов
/ 24 октября 2018

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

Когда я запускаю простое приложение (стандартный проект из Android Studio или приложение-пример Google) в Android Studio, я проверяю исходную собственную память.Допустим, его 17 мб.Если я пару раз меняю ориентацию, то родная память уходит до 40 Мб, а если я заставлю GC, память упадет до 23-25.Если я сделаю это пару раз, после GC память останется на 23-25.Так откуда же взялись эти лишние МБ?

Конечно, утечки памяти нет, потому что я проверил ее и потому, что собственная память продолжала расти.

Сохраняет ли Android какой-то кэш?

Также, если в приложении я использую библиотеки ex retrofit2, glide и т. Д., Объем собственной памяти будет увеличен, но в пределах + 20 МБ от исходной памяти.

LogHeap:

 Log.d("tag", "debug. =================================");
                Log.d("tag", "debug.heap native: allocated " + df.format(allocated) + "MB of " + df.format(available) + "MB (" + df.format(free) + "MB free)");
                Log.d("tag", "debug.memory: allocated: " + df.format(new Double(Runtime.getRuntime().totalMemory() / 1048576.0)) + "MB of " + df.format(new Double(Runtime.getRuntime().maxMemory() / 1048576.0)) + "MB (" + df.format(new Double(Runtime.getRuntime().freeMemory() / 1048576.0)) + "MB free)");

1 Ответ

0 голосов
/ 24 октября 2018

Отказ от ответственности: для обычной JVM верно следующее. Я точно не знаю, ведет ли себя Android таким же образом.

Классы (байт-код) загружаются по требованию, но никогда не выгружаются.Поэтому, когда ваше приложение запускается, вы, вероятно, еще не загрузили все классы, а просто необходимый минимум для запуска.Чем больше используется приложение, тем больше классов будет загружаться, пока у вас их не будет.

...