System.gc详解
程序员文章站
2022-04-18 19:24:00
...
- 做了什么事情?
做一次FullGC,主要用于回收掉被DirectByteBuff
对象引用的堆外内存 - 为什么?
原码为证,在jdk目录下的src.zip中引用System.gc()
的地方只有一个,就是java.nio.Bits#reserveMemory
;调用java.nio.Bits#reserveMemory
也只有一个,即java.nio.DirectByteBuffer#DirectByteBuffer(int)
。 - 怎么触发?
JVM使用的是CMS垃圾回收算法
-XX:UseConcMarkSweepGC&&ExplicitGCInvokesConcurrent&&GCCause::_java_lang_system_gc
- 应用场景有哪些?
回收掉被DirectByteBuff对象引用的堆外内存
参考资料:
http://mp.weixin.qq.com/s/V1Y6DIoscTuv7RVlIZgVpw
http://hllvm.group.iteye.com/group/topic/27945
https://www.jianshu.com/p/40412b008cb5