1:對象可能不被垃圾回收
2:垃圾回收并不等于“析構”
3:垃圾回收隻與記憶體有關,為了回收程式不再使用的記憶體
java虛拟機采用了“自适應”的垃圾回收機制,即“自适應的、分代的、停止—複制、标記—清掃”式垃圾回收器。
java虛拟機會見識,如果所有對象都很穩定,垃圾回收器的效率降低的話,就切換到“标記——清掃”方式,如果堆控件出現很多碎片,就會切換回“停止——複制”方式。
下面介紹兩種方式的運作方式:
停止——複制(stop-and-copy)先暫停程式的運作,(是以它不屬于背景回收模式),然後将所有存貨的對象從目前堆複制到另一個堆,沒有被複制的全是垃圾,當對象被複制到新堆是,他們是緊密排列的。這種方式效率很低,首先的有兩個對,然後得在這兩個分離的堆之間來回倒騰。
Java的垃圾回收機制是Java虛拟機提供的能力,用于在空閑時間以不定時的方式動态回收無任何引用的對象占據的記憶體空間。
需要注意的是:垃圾回收回收的是無任何引用的對象占據的記憶體空間而不是對象本身。
System.gc()
Runtime.getRuntime().gc()
上面的方法調用時用于顯式通知JVM可以進行一次垃圾回收,但真正垃圾回收機制具體在什麼時間點開始發生動作這同樣是不可預料的,這和搶占式的線程在發生作用時的原理一樣。