System.gc()有什么意义?

既然调用了System.gc(),垃圾回收也不能立即执行,为什么还要调用它?有什么具体的应用场景?

主要是触发一次,但是效果并不一定很好。
http://blog.csdn.net/huxin1/article/details/5932911

这就是Java的垃圾回收机制了,程序无法精确控制垃圾回收时机,只能强制通知系统进行垃圾回收,System.gc() 就是一种强制通知的措施。
推荐好好读一下 深入理解Java虚拟机 应该可以帮助你理解

 public static void gc()运行垃圾回收器。 
调用gc方法表明,Java虚拟机花费了回收未使用对象的努力,以使其当前占用的内存可以快速重用。 当控件从方法调用返回时,Java虚拟机已经尽力从所有丢弃的对象中回收空间。 

电话System.gc()有效地等效于通话: 

 Runtime.getRuntime().gc()
 另请参见: 
Runtime.gc() 
public void gc()运行垃圾回收器。 调用此方法表明,Java虚拟机花费了回收未使用对象的努力,以使其当前占用的内存可用于快速重用。 当控制从方法调用返回时,虚拟机已尽全力回收所有丢弃的对象。 
名称gc代表“垃圾收集器”。 根据需要在虚拟机自动执行此再循环过程,在单独的线程中,即使gc方法没有显式调用。 

方法System.gc()是调用该方法的常规和方便的方法。