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

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

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

    posts - 82, comments - 269, trackbacks - 0, articles - 1
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    finalize函數的一點疑問

    Posted on 2006-11-23 15:21 itspy 閱讀(1264) 評論(6)  編輯  收藏 所屬分類: JAVA技術

    最近經常找工作面試,在復習一些基礎知識時,讓我想起了一個平時沒有留言到的問題,就是finalize與GC的關系。在查一些資料后還是不太明白,特別是下面一段話。

    根據Java語言規范,JVM保證調用finalize函數之前,這個對象是不可達的,但是JVM不保證這個函數一定會被調用。另外,規范還保證finalize函數最多運行一次。
    (上面的這句話來源:http://www-128.ibm.com/developerworks/cn/java/l-JavaMemoryLeak2/index.html


    這句話是不是可以理解:“finalize函數可能不會被運行,并且就算運行也只會被運行一次?”


    那么很自然的就要問,它在哪些情況會被調用,在哪些情況下不會被調用。

    如果不被調用,那么如何釋放一些特定的資源呢?


    我以前一直理解的是,它一定會在對象被回收之前被調用,也就是GC會保證它運行一次,也就是肯定會運行一次。


    評論

    # re: finalize函數的一點疑問  回復  更多評論   

    2006-11-23 16:40 by BeanSoft
    正確,呵呵,有可能不運行就被回收了..

    # re: finalize函數的一點疑問  回復  更多評論   

    2006-11-23 16:46 by reital
    是這樣的,如果jvm覺得對內存不足,會進行回收,會收到一個對象的時候就會調用這個對象的finilize函數,但是還存在一種情況,就是jvm沒有覺得堆內存不足你的程序就已經結束了,所以也不會對對象進行回收,當然也調用不了這個函數。

    # re: finalize函數的一點疑問  回復  更多評論   

    2006-11-24 07:58 by swiftybin
    垃圾回收是由JVM控制的,所以如果一個對象沒有任何引用的話就成了垃圾,那么finalize方法有被調用的可能,可是如果直到程序運行結束推出了,JVM也沒有進行垃圾回收,那finalize方法肯定不會被調用。
    所以finalize要么不被調用,要么只被調用一次,因為調用后這個對象就沒啦,那它的finalize方法還怎么調用。

    # re: finalize函數的一點疑問  回復  更多評論   

    2006-11-24 09:37 by itspy
    我又找到了下面的參考文獻,這人講的比較清楚

    http://www.microsoft.com/china/MSDN/library/archives/technic/develop/vj/0515c.asp


    首先,只有當垃圾回收器釋放該對象的內存時,才會執行finalize()。如果在 Applet 或應用程序退出之前垃圾回收器沒有釋放內存,垃圾回收器將不會調用finalize()。

    樓上的說:
    “因所以finalize要么不被調用,要么只被調用一次,因為調用后這個對象就沒啦,那它的finalize方法還怎么調用。 ”
    這一點好像不太對,因為下面的參考文獻就給了一個反例:就是在finalize函數中,可以把對象重新變成可達的,這樣對象就不會被GC回收了。
    http://www-128.ibm.com/developerworks/cn/java/l-JavaMemoryLeak2/index.html

    # re: finalize函數的一點疑問  回復  更多評論   

    2006-11-27 22:37 by reital
    呵呵,更正一下:所以finalize要么不被調用,要么只被調用一次,因為調用后這個對象就沒啦,那它的finalize方法還怎么調用。
    應該是:應為推出后對象就沒有了。 筆誤,謝謝樓上給與指出。

    # re: finalize函數的一點疑問  回復  更多評論   

    2006-11-28 10:41 by itspy
    我還以為我們對這個東西的理解不一樣呢。原來是筆誤啊,剛好出現在關鍵位置了,引起了誤會。

    主站蜘蛛池模板: 最近中文字幕mv免费高清电影| 国产一级片免费看| 91九色精品国产免费| 亚洲一区二区三区首页| 国产永久免费高清在线| 国产亚洲3p无码一区二区| 免费看黄的成人APP| 亚洲AV无码一区东京热久久| 男人都懂www深夜免费网站| 亚洲人成中文字幕在线观看| 在线观看肉片AV网站免费| 亚洲av之男人的天堂网站| 99在线观看精品免费99| 亚洲欧洲国产成人精品| 三年片在线观看免费大全| 亚洲av中文无码乱人伦在线观看| 国产精品视频免费一区二区三区| 天堂亚洲免费视频| 亚洲日韩av无码| 91成人免费在线视频| 亚洲成AV人影片在线观看| 亚洲精品国产日韩无码AV永久免费网 | 亚洲日本va一区二区三区| 国产成人免费a在线视频app| 羞羞网站在线免费观看| 亚洲精品成人在线| 免费人妻无码不卡中文字幕系| 亚洲激情视频图片| heyzo亚洲精品日韩| 国产精品免费无遮挡无码永久视频 | 天天天欲色欲色WWW免费| 国产尤物在线视精品在亚洲| 亚洲午夜福利AV一区二区无码| 日本免费人成视频在线观看| 亚洲一区二区三区91| 亚洲AV无码成人精品区大在线| 免费在线观看一级片| 日韩欧美亚洲中文乱码| 亚洲AV永久精品爱情岛论坛| 国产桃色在线成免费视频| 久久国产精品免费|