I have seen many Android answers that suggest calling the garbage collector in some situations.
Is it a good practice to request the garbage collector in Android before doing a memory-hungry operation? If not, should I only call it if I get an
Are there other things I should use before resorting to the garbage collector?
For versions prior to 3.0 honeycomb: Yes, do call
I tried to create Bitmaps, but was always getting "VM out of memory error". But, when I called
System.gc() first, it was OK.
When creating bitmaps, Android often fails with out of memory errors, and does not try to garbage collect first. Hence, call
System.gc(), and you have enough memory to create Bitmaps.
If creating Objects, I think
System.gc will be called automatically if needed,
but not for creating bitmaps. It just fails.
So I recommend manually calling
System.gc() before creating bitmaps.
Generally speaking, in the presence of a garbage collector, it is never good practice to manually call the GC. A GC is organized around heuristic algorithms which work best when left to their own devices. Calling the GC manually often decreases performance.
Occasionally, in some relatively rare situations, one may find that a particular GC gets it wrong, and a manual call to the GC may then improves things, performance-wise. This is because it is not really possible to implement a "perfect" GC which will manage memory optimally in all cases. Such situations are hard to predict and depend on many subtle implementation details. The "good practice" is to let the GC run by itself; a manual call to the GC is the exception, which should be envisioned only after an actual performance issue has been duly witnessed.