天天看點

jvm虛拟機對象存活算法和垃圾回收算法

jvm虛拟機對象存活算法和垃圾回收算法

java虛拟機是怎麼判斷該對象是不是可以被回收了呢?

  1. 引用計數法

    給對象添加一個引用計數器,每當有一個地方引用了這個對象,則計數器加1,當引用失效的時候,計數器減1,當計數器個數為0,則表明這個對象已死,可以被垃圾回收器回收了。

此中方式無法解決對象互相引用的問題,是以java虛拟沒有采用這個方式
  1. 可達性分析算法

    根據引用關系,判斷對象是否和GCroot之前存在直接或間接的引用關系,來決定這個對象是否可以被回收。

    可作為GC Root 的有以下幾種:

  • 虛拟機棧中本地變量引用的對象
  • 方法區中類的靜态屬性引用的對象
  • 方法區中常量引用的對象
  • native方法中引用的對象

介紹一下java垃圾收集算法?

  1. 标記-清除算法
  2. 複制算法
  3. 标記-整理算法
  4. 分代收集算法

未完待續。。。