jvm虛拟機對象存活算法和垃圾回收算法
java虛拟機是怎麼判斷該對象是不是可以被回收了呢?
-
引用計數法
給對象添加一個引用計數器,每當有一個地方引用了這個對象,則計數器加1,當引用失效的時候,計數器減1,當計數器個數為0,則表明這個對象已死,可以被垃圾回收器回收了。
此中方式無法解決對象互相引用的問題,是以java虛拟沒有采用這個方式
-
可達性分析算法
根據引用關系,判斷對象是否和GCroot之前存在直接或間接的引用關系,來決定這個對象是否可以被回收。
可作為GC Root 的有以下幾種:
- 虛拟機棧中本地變量引用的對象
- 方法區中類的靜态屬性引用的對象
- 方法區中常量引用的對象
- native方法中引用的對象
介紹一下java垃圾收集算法?
- 标記-清除算法
- 複制算法
- 标記-整理算法
- 分代收集算法
未完待續。。。