Naprawdę myślę, że to zależy od twojej sytuacji.
Ponieważ sterty są generacyjne, GC może nie pozbyć się niektórych dużych obiektów lub bitmap na pierwszym przejściu, a jego heurystyka może nie wskazywać, że dodatkowe usuwanie śmieci jest konieczne, ale istnieją zdecydowanie scenariusze, w których heurystyka może być Źle, a my jako programiści znamy wzorzec, lub możemy przewidzieć użycie, którego nie ma GC, a zatem wywołanie system.gc() przyniesie nam korzyść.
Widziałem to wcześniej w określonych sytuacjach, takich jak układanie kafelków map lub inne intensywne graficzne zachowania, w których natywny GC w systemie Android (nawet na urządzeniach z systemem 3.0+) nie zapewnia prawidłowego działania, co skutkuje brakiem pamięci błędy. Jednak dodanie kilku wywołań GC powoduje, że błędy braku pamięci są blokowane, a system nadal przetwarza dane z mniejszą szybkością (z powodu czyszczenia pamięci). W intensywnych operacjach graficznych zazwyczaj oznacza to, że pożądany stan (niewielkie opóźnienie) w aplikacji ulega awarii, ponieważ nie może załadować dodatkowych zasobów do pamięci.
Moje jedyne wyjaśnienie, dlaczego tak się dzieje w niektórych sytuacjach, wydaje się być czasowe. Jeśli operacje użytkownika są powolne, natywna wersja GC systemu Android wydaje się być świetna. Jeśli jednak użytkownik szybko przewija lub szybko się powiększa, widziałem, że opóźnienie GC Androida jest opóźnione, a kilka dobrze przemyślanych SystemGc() spowodowało awarię moich aplikacji.
Nie sądzę, że jeśli twoja aplikacja nie ma wydajności, powinna być czymś innym, chyba że przydzielisz ogromną ilość danych. Czy tak jest? – lc2817
Potrzeba metody system.gc() http://stackoverflow.com/questions/3117429/garbage-collector-in-android –
@ Ic2817 uważnie przeczytaj pytanie. Nie powiedziałem, że moja aplikacja zachowuje się w ten sposób. Omawiam istniejącą system.gc() – Sameer