JVM的垃圾回收算法

JVM的垃圾回收算法

1.标记-清除算法:
主要分为两个阶段,一个是标记阶段还有一个清除阶段,在标记阶段标记出所有活着的对象,然后在清除阶段将没有标记的对象全部清除。
适用于老年代,存活对象比较多的时候比较高效。缺点是容易产生内存碎片,再来一个比较大的对象时,该对象的大小大于空闲表中的每一块儿大小但是小于其中两块儿的和,会提前触发垃圾回收。而且扫描了整个空间两次。
2.复制算法
对所有节点进行扫描,将存活的对象复制到一个新的内存空间,然后将原来的内存空间直接回收。
适用于新生代,存活对象较少的情况。只扫描了一次空间。
缺点是需要一块空的空间,并且需要复制移动对象
3.标记-整理算法
从根节点开始对所有对象进行一次标记,将活着的对象压缩到内存的一端,然后将边界之外的空间清理掉。这样既能避免碎片的产生,又不需要两块相同的空间,因此性价比很高。是一种老年代回收算法。
4.分代收集算法
分代收集算法就是目前虚拟机使用的垃圾回收算法,它解决了标记整理不适用于老年代的问题,将内存分为各个年代。一般情况下将堆区划分为老年代和新生代,在堆区之外还有一个代就是永久代。
在不同年代使用不同的算法,从而使用最合适的算法,新生代存活率低,可以使用复制算法。而老年代对象存活率搞,没有额外空间对它进行分配担保,所以只能使用标记清除或者标记整理算法。
垃圾回收器

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值