Я работаю над приложением, которое обрабатывает множество ассигнований (порядка 4 миллионов удваивается и миллион классов). Я просматривал журналы сборщиков мусора, и я вижу, что разное количество памяти освобождается на разных устройствах.
Например, у меня есть Moto X (2014), который заканчивается освобождением чуть более 312 МБ. У меня также есть Droid Bionic, который запускает тот же код с теми же данными, что в среднем составляет 616 МБ. Оба устройства имеют размер кучи около 50 МБ.
Почему так много памяти освобождается GC на Bionic, чем Moto X? Они должны генерировать столько же мусора каждый. Что происходит за кулисами в сборщике мусора? Moto X находится на Android 5.1, а Bionic - на 4.1.2.
Изменить: у меня есть четыре устройства, которые освобождают около 300 МБ ОЗУ: Moto X (2014), Nexus 7 2013, Nexus 7 2012 и Razr i. Все четыре из них используют АРТ. Bionic работает во время работы Dalvik. Это почему меньше освобождает? Я заметил, что GC_FOR_ALLOC не происходит в АРТ, но все время звонит в Далвик.