美文网首页
jvm回收策略(回收算法)

jvm回收策略(回收算法)

作者: 程序男保姆 | 来源:发表于2020-05-27 09:26 被阅读0次

标记-清除算法

1 效率问题 :在不连续的空间里如果创建大对象会出发多次gc
2 空间问题:   gc后的空间排序不连续

GC分为两个阶段,标记和清除。首先标记所有可回收的对象,在标记完成后统一回收所有被标记的对象。同时会产生不连续的内存碎片。碎片过多会导致以后程序运行时需要分配较大对象时,无法找到足够的连续内存,而不得已再次触发GC。

Java堆内存又溢出了!教你一招必杀技

复制算法

  • 将内存按容量划分为两块,每次只使用其中一块。当这一块内存用完了,就将存活的对象复制到另一块上,然后再把已使用的内存空间一次清理掉。这样使得每次都是对半个内存区回收,也不用考虑内存碎片问题,简单高效。缺点需要两倍的内存空间。
Java堆内存又溢出了!教你一招必杀技

jvm堆分布 此模式如果只损失新生代1/10的内存 。假如堆内存为10M 则会损失 10/3/10M = 0.3M


image.png
  • 标记-整理算法
  • 分代收集算法

相关文章

网友评论

      本文标题:jvm回收策略(回收算法)

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