Ответ 1
Прежде всего, то, что вы видите в LogCat, будет отличаться от одного устройства к другому. Если вы уверены, что GC не поступает из вашего приложения, вы абсолютно ничего не можете сделать. Вы всегда найдете GC, сделав... что-то. Удостоверьтесь, что вы сохранили свой код чистым и очень легким.
Плюс, помните, что, вообще говоря, при наличии сборщика мусора никогда не бывает хорошей практики ручного вызова GC. GC организован вокруг эвристических алгоритмов, которые лучше всего работают, когда оставляют их собственные устройства. Вызов GC вручную часто снижает производительность.
Иногда, в некоторых относительно редких ситуациях, можно обнаружить, что конкретный GC ошибается, и ручной вызов GC может затем улучшать вещи по производительности. Это связано с тем, что на самом деле невозможно реализовать "идеальный" GC, который оптимально управляет памятью во всех случаях. Такие ситуации трудно предсказать и зависеть от многих тонких деталей реализации. "Хорошая практика" - позволить GC работать сама по себе; ручным вызовом в GC является исключение, которое должно быть предусмотрено только после того, как фактическая проблема с производительностью была должным образом засвидетельствована.
Я не считаю, что это недостаток Android <= 2.2. Это происходит на более высоких версиях? Вы протестировали его?