System.gc详解

  • 做了什么事情?
    做一次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

你可能感兴趣的:(System.gc详解)