內(nèi)存回收與分配重點關注的是堆內(nèi)存方法區(qū)內(nèi)存(程序計數(shù)器占用小,虛擬機棧和本地方法棧隨線程有相同的生命周期)。

一、判斷對象是否存活?

1. 引用計數(shù)算法

優(yōu)勢:實現(xiàn)簡單,效率高。
致命缺陷:無法解決對象相互引用的問題——會導致對象的引用雖然存在,但是已經(jīng)不可能再被使用,卻無法被回收。

2. 可達性分析算法

對象到GC Roots沒有引用鏈,則回收。

GC Roots包括:

  • (1)Java虛擬機棧中引用的對象。

  • (2)方法區(qū)中類靜態(tài)屬性引用的對象。

  • (3)方法去中常量引用的對象。

  • (4)本地方法棧中Native方法(JNI)引用的對象。

3. 關于引用

JDK1.2之后,Java對引用進行了擴充。

    網(wǎng)友評論