JVM垃圾回收(GC)

  • 只发生在heap(堆)中
  • 分类
    • 次数上频繁收集Young区(年轻代),Minor GC
    • 次数上较少收集Old区(老年代),Full GC
    • 基本上不动Perm区(永久区没有GC)
  • 四大收集算法
    • 引用计数法
      • 已经被淘汰了,没有办法处理循环引用问题,JVM已经不用这个算法了
    • 复制算法
      • 特点:从一个内存区域复制到另一个内存区域
      • 时机和位置:发生在Young区(年轻代),Minor GC
      • 缺点
        • 需要双倍空间
      • 优点
        • 效率高,速度快
        • 没有内存碎片,是连续的。
    • 标记清除
      • 特点:清除没有标记的,过程是标记+清除
      • 时机和位置:发生在Old区(老年代),Full GC
      • Old区(老年代)一般是由标记清除或者是标记整理的混合实现
      • 缺点
        • 清理过程中要扫描两次,标记一次,清除一次,耗时严重
        • 有内存碎片
      • 优点
        • 不需要双倍空间
    • 标记压缩
      • 特点:先进行标记,再进行压缩,过程是标记+压缩
      • 时机和位置:发生在Old区(老年代),Full GC
      • Old区(老年代)一般是由标记清除或者是标记整理的混合实现
      • 缺点
        • 清理过程中要扫描两次,标记一次,压缩一次,耗时严重
        • 需要移动对象的成本
      • 优点
        • 不需要双倍空间
        • 没有内存碎片,是连续的。
    • 标记清除压缩
      • 标记、清除多次以后再进行压缩,减少了移动对象的成本
  • 实际工作中的意义/用途

猜你喜欢

转载自www.cnblogs.com/wyp1988/p/12058877.html