<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 70,comments - 408,trackbacks - 0

    gc只能清除在堆上分配的內存(純java語言的所有對象都在堆上使用new分配內存),而不能清除棧上分配的內存(當使用JNI技術時,可能會在棧上分配內存,例如java調用c程序,而該c程序使用malloc分配內存時).因此,如果某些對象被分配了棧上的內存區域,

    gc就管不著了,對這樣的對象進行內存回收就要靠finalize().舉個例子來說,當java 調用非java方法時(這種方法可能是c或是c++的),在非java代碼內部也許調用了c的malloc()函數來分配內存,而且除非調用那個了free() 否則不會釋放內存(因為free()是c的函數),這個時候要進行釋放內存的工作,gc是不起作用的,因而需要在finalize()內部的一個固有方法調用它(free()).finalize的工作原理應該是這樣的:一旦垃圾收集器準備好釋放對象占用的存儲空間,它首先調用finalize(),而且只有在下一次垃圾收集過程中,才會真正回收對象的內存.所以如果使用finalize(),就可以在垃圾收集期間進行一些重要的清除或清掃工作.

    finalize使用的三種情況:
    1.所有對象被Garbage Collection時自動調用,比如運行System.gc()的時候.
    2.程序退出時為每個對象調用一次finalize方法。
    3.顯式的調用finalize方法
    除此以外,正常情況下,當某個對象被系統收集為無用信息的時候,finalize()將被自動調用,但是jvm不保證finalize()一定被調用,也就是說,finalize()的調用是不確定的,這也就是為什么sun不提倡使用finalize()的原因.

    posted on 2005-11-10 18:25 我心依舊 閱讀(364) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 一二三四在线播放免费观看中文版视频 | 国产色爽免费视频| 99久久免费观看| 久久99久久成人免费播放| 亚洲乱色熟女一区二区三区蜜臀| 亚洲视频在线免费观看| 久久影视综合亚洲| www.91亚洲| 国产免费无遮挡精品视频| 国产精品视频免费一区二区| 三年片在线观看免费大全电影| 国产vA免费精品高清在线观看| 在线亚洲v日韩v| 亚洲国产精品无码观看久久| 激情综合亚洲色婷婷五月APP| 亚洲色图在线播放| 无码久久精品国产亚洲Av影片| 国产亚洲情侣一区二区无码AV| 亚洲av成人一区二区三区在线观看 | 四虎成人精品在永久免费| 67194成是人免费无码| 免费精品国偷自产在线在线| 精品一区二区三区免费毛片爱 | 免费观看的毛片大全| 美女内射无套日韩免费播放| 精品国产一区二区三区免费| 中文字幕在线视频免费| 在线视频网址免费播放| 国产免费内射又粗又爽密桃视频 | 亚洲乱码中文字幕综合234 | 久草免费福利在线| 成人妇女免费播放久久久| 国产激情久久久久影院老熟女免费| 免费在线观看一区| a级毛片免费高清视频| 久久高潮一级毛片免费| 免费萌白酱国产一区二区三区| 日本免费A级毛一片| 人妻无码久久一区二区三区免费 | 亚洲中文字幕无码日韩| 国产专区一va亚洲v天堂|