美文网首页
gc常用算法

gc常用算法

作者: 策马踏清风 | 来源:发表于2020-06-30 18:14 被阅读0次

标记清除

标记清除主要分为两步

  1. 标记,标记需要清除的对象
  2. 清除,在内存中清除这些对象

优点

  1. 速度快
  2. 清理之后存活对象的地址没变,所以不影响引用

缺点

  1. 会造成内存碎片
    例如:清理了一个小对象,腾出一块小空间。当有大对象需要分配时因为空间太小就无法在此区域分配空间。
  2. 因为内存碎片导致内存不足及频繁gc

复制算法

  1. 把空间分成两份同等大小的区域
  2. 只有一块区域存放对象,当此区域快要满了的时候把存活的对象放到另一个区域里
  3. 清除之前的区域

优点

  1. 只搬运存活对象,速度也很快
  2. 不会产生内存碎片

缺点

  1. 降低了内存使用率,实际只使用了一半内存

标记整理

  1. 标记可回收对象
  2. 回收对象并腾出空间
  3. 对剩下存活的对象整理

和标记清除对比

  1. 前两步一样,多了对于存活对象的整理

优点

  1. 相对复制算法,节约空间
  2. 解决了标记清除的内存碎片问题

缺点

  1. 效率比上面两个低

实际使用

jvm中年轻代采用的就是复制算法,因为年轻代中大部分对象是需要清空的,只用把少部分放到另一块内存即可
老年代采用的是标记-整理算法

相关文章

  • GC常用算法及常见分代:Minor GC、Major GC和Fu

    GC常用算法及常见分代:Minor GC、Major GC和Full GC [TOC] GC的概念在20世纪60年...

  • gc常用算法

    标记清除 标记清除主要分为两步 标记,标记需要清除的对象 清除,在内存中清除这些对象 优点 速度快 清理之后存活对...

  • jvm 调优 和gc 算法

    jvm 常用命令 : jmap jstat jinfo jps gc 算法 串行垃圾回收器(Serial ...

  • java常用GC算法

    (1).复制收集算法 针对Young区,依次扫描这个区的所有可达对象(如何确定可达对象,请参考前一节),扫描...

  • 【JVM】垃圾回收机制(1)--如何判定对象可以回收

    一 垃圾回收机制概述 也没有规定GC如何工作。不过常用的jvm都有GC,而且大多数GC都使用类似的算法管理内存和执...

  • 关于GC之二-常用GC算法

    回收 回收是个比较大的话题,有各种各样的算法,针对不同区域,也有不同的算法选择。 常见的GC算法 标记清除(Mar...

  • chapter-4 GC算法与种类

    GC 算法与种类 ■ GC的概念■ GC算法• 引用计数法• 标记清除• 标记压缩• 复制算法■可触及性■ Sto...

  • Lua GC

    一、GC的原理及其算法设计 不同的语言,对GC算法的设计不同,常见的GC算法是引用计数和Mark-Sweep算法,...

  • JVM-垃圾、垃圾回收算法(2)

    GC常用算法 1. 标记清除(Mark-Sweep) 算法相对简单 在存活对象较多的情况,下效率较高。 两次扫描,...

  • GC的常用算法简述

    前言 最近被问到常用语言的GC原理,由于之前没有这么深入的探究,趁此机会做一个简单的总结。 至于为啥要了解GC,是...

网友评论

      本文标题:gc常用算法

      本文链接:https://www.haomeiwen.com/subject/ncyxqktx.html