欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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