垃圾收集是java與c/c++的最大不同。有了jvm的自動垃圾收集機制,就可以讓程序員專注于程序邏輯開發(fā),
而不是花費大量的時間是考慮變量應(yīng)該在什么時候去釋放。
下面就來簡單說一下java的垃圾收集相關(guān)的東西
首先要明白的一個問題是,jvm是如何判斷一個對象已經(jīng)變成了”垃圾“的呢?
兩個方法:
1)引用記數(shù)法:
為每個對象保存一個引用的數(shù)量,每增加一個引用這個值就加1,每減少一個引用就減1.如果這個記數(shù)變?yōu)?/p>
0了,就說明這個對象已經(jīng)不再被使用了。那么jvm就認(rèn)為這個對象是可以回收的了。
但是這個方法有一個缺點,就是無法解決循環(huán)引用的問題。A引用B,B也引用A,如果A,B兩個對象都不再
被使用了,那么這兩個對象其實都是可以被回收的,但是他們的引用記數(shù)不為0.所以用這個辦法就沒有辦法回收了。