Выделение Android быстрее, чем сбор мусора - PullRequest
0 голосов
/ 07 декабря 2018

У меня большое приложение (2-летняя кодовая база), и оно начинает получать ANR от ряда своих пользователей.

Я посмотрел на Profiler в Android Studio, и похоже, что я разрешил освобождение для всего - никаких циклических ссылок (не то, чтобы это имело значение), и каждый тип объекта в конечном итоге получает некоторые освобождения (ключевое слово )КОНЦЕ КОНЦОВ ).

Однако, просто эти объекты освобождаются не так быстро, как они распределяются с течением времени.Это приводит к огромному увеличению общего количества, например, 300 МБ после 30 минут использования от обычных 120 МБ всего за 5 минут использования.

Я не знаю, что делать, кроме как пересмотреть мой код с помощью более чистых реализаций, так чтоЯ не использую сборщик мусора.Есть ли что-то еще, что я могу попробовать?Возможно, вручную вызвать сборщик мусора или попросить Android попробовать другую конфигурацию для управления памятью?Любой совет, большой или маленький, будет оценен.

1 Ответ

0 голосов
/ 07 декабря 2018

Конечно, вы можете вызвать сборщик мусора вручную с помощью

System.gc()

Также вы можете сбросить использование памяти в Profiler из Android Studio, где вы получите журнал распределения.Таким образом вы можете определить, какие объекты потребляют память, и можете принять необходимые меры.

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