Java垃圾回收機制是Java另外一個技術優勢,我們一般寫程序一般只是注重對象的初始化,卻忽略對象的釋放和回收。這里說的釋放其實是內存的釋放和回收,對象釋放只是一種形象的說法,真正釋放和回收的是內存?。?!
      Java垃圾回收釋放內存是Java運行系統自己自動完成的,不需要程序員干預,程序員也無法干預,負責回收的是垃圾回收器,它可以在對象不再使用時,釋放并回收存儲該對象的那塊內存。回收機制是一種動態的回收機制,這是一種不定時回收機制,垃圾回收器可能在任意時間啟動,進行垃圾回收,并不一定是產生垃圾才啟動,這并無規律可循。
      值得注意的是只有new出來的對象所占據的內存才有可能被回收,而接口這種不能new出來的對象所占據的內存是不能被回收的?。。?/div>
      最后Java虛擬機有兩種回收策略,一種是復制式回收策略,通過給正在被使用的對象復制出一塊內存,再把空閑的那塊內存釋放掉就可以實現垃圾回收,這種方式比較適合垃圾比較多的情況;另一種是自省式回收策略,通過給正在被使用的對象標記,完成標記后再把所有不再被使用的對象所占據的內存一次性釋放掉,一次性釋放的時間長短根據垃圾的多少而定,所以這種方式比較適合垃圾比較少的情況。
      通常情況是在程序運行時,這兩種方式結合使用,當垃圾比較少時,就啟動自省式回收策略,當垃圾比較多時,就啟動復制式回收策略。
發表于 2010-10-07 22:21 遲到的鐘聲 閱讀(80) 評論(0)  編輯  收藏