JVM虚拟机

1.垃圾回收算法分类

算法一:引用计数法。

       这个方法是最经典点的一种方法。具体是对于对象设置一个引用计数器,每增加一个变 量对它的引用,引用计数器就会加 1,没减少一个变量的引用,引用计数器就会减 1,只有当对象的引用计数器变成 0 时,该对象才会被回收。可见这个算法很简单,但是简单往往会存在很多问题,这里我列举最明显的两个问题。
       一是采用这种方法后,每次在增加变量引用和减少引用时都要进行加法或减法操作,如 果频繁操作对象的话,在一定程度上增加的系统的消耗。
       二是这种方法无法处理循环引用的情况。再解释下什么是循环引用,假设有两个对象 A和 B,A 中引用了 B 对象,并且 B 中也引用了 A 对象,那么这时两个对象的引用计数器都不为 0,但是由于存在相互引用导致无法垃圾回收 A和 B,导致内存泄漏。

10.1.2算法二:标记清除法

       这个方法是将垃圾回收分成了两个阶段:标记阶段和清除阶段。

  1. 在标记阶段,通过跟对象,标记所有从跟节点开始的可达的对象,那么未标记的对象就 是未被引用的垃圾对象。
  2. 在清除阶段,清除掉所以的未被标记的对象。

       这个方法的缺点是,垃圾回收后可能存在大量的磁盘碎片,准确的说是内存碎片。因为对象所占用的 地址空间是固定的。对于这个算法还有改进的算法,就是我后面要说的算法三。

算法三:标记压缩清除法(Java 中老年代采用)。
       在算法二

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页
实付 19.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值