Я действительно думаю, что это зависит от вашей ситуации.
Поскольку куча является генеративной, GC может не избавиться от определенных больших объектов или растровых изображений при первом проходе, а его эвристика может не указывать на необходимость дополнительной сборки мусора, но есть определенно сценарии, в которых эвристика может быть неправильной и мы, как разработчики, знаем шаблон или можем предсказать использование, которое GC не может, и поэтому вызов system.gc () принесет нам пользу.
Я видел это раньше в определенных сценариях, таких как работа с листами карты или другие графически интенсивные варианты поведения, когда собственный GC в Android (даже на устройствах 3.0+) не дает правильного результата, что приводит к ошибкам нехватки памяти , Однако, добавив несколько вызовов GC, ошибки Out of Memory предотвращаются, и система продолжает обрабатывать, хотя и с более медленной скоростью (из-за сбора мусора). В графически интенсивных операциях это обычно желаемое состояние (небольшое отставание) при сбое приложения, поскольку оно не может загрузить дополнительные ресурсы в память.
Мое единственное объяснение того, почему это происходит в определенных сценариях, - это время. Если пользовательские операции медленные, то, похоже, родной Android GC работает отлично. Однако, если ваш пользователь выполняет быструю или быструю прокрутку, именно здесь я заметил отставание Android GC, и несколько хорошо продуманных System.gc () привели к тому, что мои приложения не перестали работать.