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

一、判斷對(duì)象是否存活?

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

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

2. 可達(dá)性分析算法

對(duì)象到GC Roots沒(méi)有引用鏈,則回收。

GC Roots包括:

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

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

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

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

3. 關(guān)于引用

JDK1.2之后,Java對(duì)引用進(jìn)行了擴(kuò)充。