在Java中如何主动调用GC

Python016

在Java中如何主动调用GC,第1张

Java的公有API可以主动调用GC的有两种办法,一个是

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来说让用户的感觉更加流畅。