System.gc() helps the programmer suggest that the collecter run. The compiler may run it or may not.

Basically java specifications do not require the collecter to run on System.gc(). You cannot force garbage collecter to run, only recommend it run.

So if your app is very memory intensive, I would suggest not to depend on grabge collecter. Unfortunately, without knowing more about your specific settings I can't suggest any alternative either. Can you specify more details about your problem