GC的简单介绍

来源:互联网 发布:大数据时代论文3000字 编辑:程序博客网 时间:2024/06/01 08:59

什么时候执行GC

  • 当新生代满了的时候触发minor GC
  • 当上升到老年代的对象大于剩余空间的时候执行Full GC。
  • 当GC与非GC的耗时超过了GCTimeRate的时候会促发OOM
  • 程序员不能控制具体的GC时间,只能调用System.gc()提示系统进行GC处理,但是JVM不一定执行。

回收什么对象

  • 在引用技术算法里面,当对象超出了作用域或者对象的引用技术为0时,该对象为垃圾对象。
  • 在GC Root算法里面,从GC root开始向下遍历,仍无法搜索到的对象,而且经过依次标记清理依然无法恢复的对象。

做些什么

  • 运行默认的finalize函数,对对象做最后的标记处理。
  • 删除垃圾对象,回收内存空间。
  • 在新生代里面,我们使用复制清理算法;在老年代里面,我们使用标记清理算法。

如何延迟对象回收或保留对象

  • 增大survivor space、老年代空间。
  • 为引用为0的对象增加老年代对他的引用。
  • 增大GcTimeRatio,低促发GC的比率。
0 0