While invoking your child activity you have to set the following flag to your intent. FLAG_ACTIVITY_CLEAR_TOP - this tag gives importance to the
intent to be started and removes all other activities in the stack.
Note : Also set FLAG_ACTIVITY_SINGLE_TOP in the list of flags.
There are many reasons why GC usage is not promoted.
1. The use of System.gc() is often considered to be inefficient code. Technically System.gc() works when there is anything to be garbaged. (This is my personal opinion and a general knowledge from my work experience)
2. You can't actually say what it does with the memory when you call it. And technically Java Heap space does not depend upon Java Memory Allocations.
3. As mentioned Google IO 2011, GC usage has to be avoided. Memory Management in Android