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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容