1. 程式人生 > >垃圾回收之判斷物件否需要被回收(根搜尋演算法和引用搜索演算法)

垃圾回收之判斷物件否需要被回收(根搜尋演算法和引用搜索演算法)

根搜尋演算法(JAVA的虛擬機器用的是這個)

可以參考這個 http://blog.csdn.net/qq_15022971/article/details/79162126


引用搜索演算法:是常被初學JAVA者誤解,java的垃圾回收在判斷一個物件是否為可以被回收的物件時,常被誤以為:沒有引用指向

這個物件了,GC執行緒就會把他當作垃圾回收掉。


實則不然,比如  :

一個類叫Reference 裡面包含一個Reference 型別的變數 instance;

 Reference ref1=new Reference();

Reference ref2=new Reference();


          ref1.instance=ref2;

          ref2.instance=ref1;

         ref1=null;                    ref2=null;
system.gc();
這樣的迴圈引用,兩個物件分別都被彼此的屬性引用著,但是又都是NULL,如果根據引用搜索演算法,這兩個物件是不會被垃圾
回收的,實則不然,
根搜尋演算法和引用搜索演算法, 引用搜索演算法主要就是解決不了迴圈引用的問題。