垃圾回收之判斷物件否需要被回收(根搜尋演算法和引用搜索演算法)
阿新 • • 發佈:2018-12-27
根搜尋演算法(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,如果根據引用搜索演算法,這兩個物件是不會被垃圾
回收的,實則不然,
根搜尋演算法和引用搜索演算法, 引用搜索演算法主要就是解決不了迴圈引用的問題。