一、判斷對象是否存活的算法(內存管理): (1)引用計數算法(Reference Counting):給對象中添加一個引用計數器,引用+1,引用失效-1,爲0的對象是不可能再被用的。微軟的COM(Component Object Model)技術等。(java沒用它主要緣由是它很難解決對象之間的相互循環引用的問題。) (2)根搜索算法(GC Roots Tracing):經過一系列的名爲「GC Roots」的對象做爲起點,從這些節點開始向下搜索,搜索所走過的路徑稱爲引用鏈(Reference Chain),當一個對象到GC Roots沒有任何引用鏈相連,是不可用對象,可回收。 Java中做爲GC Roots對象:虛擬機棧中的引用的對象/方法區中的類靜態屬性引用的對象和常量引用的對象、本地方法棧中JNI的引用的對象。 引用分四類:強引用(Strong Reference)、軟引用(Soft Reference)、弱引用(Weak Reference)、虛引用(Phantom Reference) 不可達對象死亡至少經歷兩次標記過程:第一次標記並篩選是否finalize()----finalize------F-Queue----標記第二次 回收方法區(常量和類)