GC算法

作者: 数码资讯站 | 来源:发表于2017-01-09 22:41 被阅读0次

GC算法包括:

  1. 新生代: 标记清除算法(mark-sweep),复制算法(copying)
  2. 老年代:标记整理算法(mark-compact)

标记清除算法

分为标记和清除两部分,首先标记需要回收的对象,然后统一回收对象空间。

必须使用空闲列表方式分配内存。

缺点:

  • 标记和清除效率不高
  • 产生大量内存碎片,在分配大内存对象时即使有较多剩余内存也会提前触发GC

复制算法

将内存分为两块,只使用其中一块。GC时,首先标记需要回收的对象,然后将存活对象统一转移到另一半内存中。

实现简单,没有内存碎片,使用指针碰撞方式分配内存即可。

HotSpot虚拟机实际实现会将新生代内存分为三部分,eden区和survivor区*2,eden与survivor区的默认大小比例为8:1,每次使用eden区和1个survivor区。保证内存使用率为90%。

标记整理算法

要把大象放冰箱,统共分三步

  1. 标记需要回收的对象
  2. 将存活对象向内存一侧复制
  3. 回收剩余未被使用的内存

相关文章

  • chapter-4 GC算法与种类

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

  • Lua GC

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

  • GC算法基础

    英文原文:GC Algorithms: Basics译者:有孚译文地址:GC算法基础 在深入GC算法的实现细节之前...

  • java性能优化

    压测工具 基准性能数据 方面 代码算法 JVM gc算法 gc收集器

  • Android内存优化

    GC算法 当内存不足时,系统就会触发GC,GC采用垃圾标记算法为跟搜索算法 从图中可以看书obj4是科大的对象,标...

  • JVM GC算法与GC执行流程

    JVM GC算法 可达分析算法 GC执行流程 https://www.jianshu.com/p/314272e6...

  • 《垃圾回收的算法与实现》第2章GC标记-清除算法

    《垃圾回收的算法与实现》第2章GC标记-清除算法 垃圾回收系列连载: 第 1 章 学习GC之前 第 2 章 GC标...

  • HotSpot note (part-3)

    part 3 DefNew的GC属于Minor GC,使用copying算法进行垃圾收集,是Serial GC(-...

  • GC part 3

    part 3 DefNew的GC属于Minor GC,使用copying算法进行垃圾收集,是Serial GC(-...

  • 面试官,不要再问我“Java 垃圾收集器”了

    如果Java虚拟机中标记清除算法、标记整理算法、复制算法、分代算法这些属于GC收集算法中的方法论,那么“GC收集器...

网友评论

      本文标题:GC算法

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