JVM-垃圾回收机制

42次阅读

共计 402 个字符,预计需要花费 2 分钟才能阅读完成。

垃圾回收 GC(Garbage Collection),回收的目的在于 清理不再使用的对象。GC 通过确定对象是否被活动对象引用来确定是否收集该对象。GC 首先要判断 该对象是否可以收集。

常用的两种方法:

  1. 引用计数法

    这种方法是属于早期策略。其中,堆中的每个对象都有一个引用计数,当对象 A 创建,对象会被分配一个变量,初始化为 1,当任何变量被赋值为这个对象的引用时,计数 +1(a = b,则 b 引用对象计数 +1)。当对象引用计数值为 0 时,则会被 GC 收集。

    • 优点:引用计数收集器可以很快地执行,交织在程序运行中。
    • 缺点:无法检测出循环引用。
  2. 跟踪收集器
  • 如今 JVM 采用引用遍历,沿着整个对象图上的每个链接,递归确定可到达的对象,若对象不能从根对象到达,则会将它作为垃圾 收集。
  • 在遍历对象时,标记能到达的对象进行。然后 GC 删除不可达到的对象,这样会导致内存分为一小段,需要重新整合。
  • 在执行时,需要停止其他活动,只有 GC 运行,多线程会增加效率。
正文完
 0