System.gc()
// 或者下面,两者等价
Runtime.getRuntime().gc()
还有一个是JMX:
java.lang.management.MemoryMXBean.gc()
作用跟System.gc()也是类似的。
MemoryMXBean.gc()和System.gc()的内部实现都是Runtime.getRuntime().gc(),从效果上说两者一模一样没有区别。
不用手动调,即使你是搞内存型程序,你在调用gc时jvm也会有它的调度规则,不是你一调用就开始回收垃圾,所以在编程时注意释放没用的资源,尤其是在线程中,因为线程没结束有些资源是无法释放的。gc()只不过会向JVM发出这样一个申请虽然系统并不一定会调用垃圾收集,但在某些情况下还是有意义的。
比如即将开辟大量内存之前使用手动请求gc,可能会比等系统自动调用gc来说让用户的感觉更加流畅。