<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)  編輯  收藏

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


    網站導航:
     
    主站蜘蛛池模板: 亚洲国产成人AV在线播放| 亚洲人成毛片线播放| 亚洲av无码无在线观看红杏| 亚洲国产成人久久精品影视| 亚洲国产综合第一精品小说| 中文字幕在线日亚洲9| 特级无码毛片免费视频| 三级黄色在线免费观看| 24小时免费看片| 日韩激情无码免费毛片| 久久亚洲中文字幕精品一区| 亚洲国产综合精品中文第一区| 亚洲国产精品免费观看| 香蕉97碰碰视频免费| 国内精品久久久久影院免费| 91频在线观看免费大全| 亚洲成A人片在线观看无码3D| 亚洲AV无码乱码国产麻豆穿越 | 全部免费国产潢色一级| 国产精品亚洲精品日韩已满| 亚洲激情电影在线| 青青视频免费在线| **俄罗斯毛片免费| 吃奶摸下高潮60分钟免费视频| 亚洲短视频男人的影院| 在线视频免费观看爽爽爽| 91亚洲一区二区在线观看不卡| 国产亚洲精品成人AA片| 久久精品无码免费不卡| 国产99视频精品免费观看7| 在线a亚洲v天堂网2018| 亚洲精品国产福利在线观看| 国产精品亚洲二区在线| 一个人免费日韩不卡视频| 国产精品免费一级在线观看| 午夜亚洲AV日韩AV无码大全| 国产精品亚洲精品爽爽| 2020因为爱你带字幕免费观看全集 | 亚洲美国产亚洲AV| 久久青草精品38国产免费| 日韩免费电影在线观看|