图解Java 垃圾回收机制

Marking标记

标记就是把需要回收的对象标志出来;
Normal Deletion 清除

标记-清除是最基础的回收算法。它有两个问题。首先是效率问题,标记和清除这两个过程,都需要全部扫描一遍;另一个问题就是空间问题,标志清除之后会产生大量不连续的内存碎片,当碎片太多的时候,就无法周到足够的连续的内存,不得不提前触发另一次的垃圾收集动作。
Deletion with Compacting 标记-整理

另一种回收算法是标记-整理算法。标记的步骤和标记-清除算法一样,但是后续步骤不是直接对对象进行删除,而是让存活的对象都向一端移动,然后之际清理掉端边界以外的内存。
JVM Generations

分代收集算法。这种算法是根据对象存活周期的不同将内存分成好几块。一般就是把Java 分成新生代(Young Generation)和老年代(Old Generation)。然后根据各个年代采用最适当的收集算法。在新生代采用了类似于复制算法。而老年代因为对象存活率高,没有额外空间对它担保,所以必须采用“标记-清理”或者“标记-整理”算法来进行回收。
image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

原文👇:https://www.oracle.com/webfolder/technetwork/tutorials/obe/java/gc01/index.html#t3

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 什么是自动垃圾回收? 自动垃圾回收是一种在堆内存中找出哪些对象在被使用,还有哪些对象没被使用,并且将后者删掉的机制...
    编程小世界阅读 631评论 0 0
  • 什么是自动垃圾回收? 自动垃圾回收是一种在堆内存中找出哪些对象在被使用,还有哪些对象没被使用,并且将后者删掉的机制...
    Java高级新技术阅读 206评论 0 0
  • 思绪万千,无法述诸笔端。成长的过程是孤独的,那么我享受这份孤独,随着时间的推移,沉淀下来的,将是最好的,不论友情还...
    橡皮擦p阅读 193评论 1 4
  • 今天5点半又成功起床,差点又败给自己,结果还是起来了。加油,养成习惯。 昨天工作上的事情有点不顺心。我被领导叫去参...
    清晨阳光28阅读 241评论 0 0
  • 昨天的血月亮,对人影响很大,特别对于原本压力就很大的人,有心脏疾病的人来说,容易出血。原因是:人百分之八十由水组成...
    蝴蝶日记小蝶阅读 903评论 0 1