日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Java的垃圾回收機制研究

瀏覽:187日期:2024-06-09 08:43:16

一、誰在做Garbage Collection?

一種流行的說法:在C++里,是系統在做垃圾回收;而在Java里,是Java自身在做。

在C++里,釋放內存是手動處理的,要用delete運算符來釋放分配的內存。這是流行的說法。確切地說,是應用認為不需要某實體時,就需用delete告訴系統,可以回收這塊空間了。這個要求,對編碼者來說,是件很麻煩、很難做到的事。隨便上哪個BBS,在C/C++版塊里總是有一大堆關于內存泄漏的話題。

Java采用一種不同的,很方便的方法:Garbage Collection.垃圾回收機制放在JVM里。JVM完全負責垃圾回收事宜,應用只在需要時申請空間,而在拋棄對象時不必關心空間回收問題。

二、對象在啥時被丟棄?

在C++里,當對象離開其作用域時,該對象即被應用拋棄。

是對象的生命期不再與其作用域有關,而僅僅與引用有關。

Java的垃圾回收機制一般包含近十種算法。對這些算法中的多數,我們不必予以關心。只有其中最簡單的一個:引用計數法,與編碼有關。

一個對象,可以有一個或多個引用變量指向它。當一個對象不再有任何一個引用變量指向它時,這個對象就被應用拋棄了?;蛘哒f,這個對象可以被垃圾回收機制回收了。

這就是說,當不存在對某對象的任何引用時,就意味著,應用告訴JVM:我不要這個對象,你可以回收了。

JVM的垃圾回收機制對堆空間做實時檢測。當發現某對象的引用計數為0時,就將該對象列入待回收列表中。但是,并不是馬上予以銷毀。

三、丟棄就被回收?

該對象被認定為沒有存在的必要了,那么它所占用的內存就可以被釋放。被回收的內存可以用于后續的再分配。

但是,并不是對象被拋棄后當即被回收的。JVM進程做空間回收有較大的系統開銷。如果每當某應用進程丟棄一個對象,就立即回收它的空間,勢必會使整個系統的運轉效率非常低下。

前面說過,JVM的垃圾回收機制有多個算法。除了引用計數法是用來判斷對象是否已被拋棄外,其它算法是用來確定何時及如何做回收。JVM的垃圾回收機制要在時間和空間之間做個平衡。

因此,為了提高系統效率,垃圾回收器通常只在滿足兩個條件時才運行:即有對象要回收且系統需要回收。切記垃圾回收要占用時間,因此,Java運行時系統只在需要的時候才使用它。因此你無法知道垃圾回收發生的精確時間。

四、沒有引用變量指向的對象有用嗎?

前面說了,沒掛上引用變量的對象是被應用丟棄的,這意味著,它在堆空間里是個垃圾,隨時可能被JVM回收。

不過,這里有個不是例外的例外。對于一次性使用的對象(有些書稱之為臨時對象),可以不用引用變量指向它。舉個最簡單也最常見的例子:

System.out.println(“I am Java!”);

就是創建了一個字符串對象后,直接傳遞給println()方法。

五、應用能干預垃圾回收嗎?

許多人對Java的垃圾回收不放心,希望在應用代碼里控制JVM的垃圾回收運作。這是不可能的事。對垃圾回收機制來說,應用只有兩個途徑發消息給JVM.第一個前面已經說了,就是將指向某對象的所有引用變量全部移走。這就相當于向JVM發了一個消息:這個對象不要了。第二個是調用庫方法System.gc(),多數書里說調用它讓Java做垃圾回收。

第一個是一個告知,而調用System.gc()也僅僅是一個請求。JVM接受這個消息后,并不是立即做垃圾回收,而只是對幾個垃圾回收算法做了加權,使垃圾回收操作容易發生,或提早發生,或回收較多而已。

希望JVM及時回收垃圾,是一種需求。其實,還有相反的一種需要:在某段時間內最好不要回收垃圾。要求運行速度最快的實時系統,特別是嵌入式系統,往往希望如此。

Java的垃圾回收機制是為所有Java應用進程服務的,而不是為某個特定的進程服務的。因此,任何一個進程都不能命令垃圾回收機制做什么、怎么做或做多少。

六、對象被回收時要做的事

一個對象在運行時,可能會有一些東西與其關連。因此,當對象即將被銷毀時,有時需要做一些善后工作。可以把這些操作寫在finalize()方法(常稱之為終止器)里。

protected void finalize()

{

// finalization code here

}

這個終止器的用途類似于C++里的析構函數,而且都是自動調用的。但是,兩者的調用時機不一樣,使兩者的表現行為有重大區別。C++的析構函數總是當對象離開作用域時被調用。這就是說,C++析構函數的調用時機是確定的,且是可被應用判知的。但是,Java終止器卻是在對象被銷毀時。由上所知,被丟棄的對象何時被銷毀,應用是無法獲知的。而且,對于大多數場合,被丟棄對象在應用終止后仍未銷毀。

在編碼時,考慮到這一點。譬如,某對象在運作時打開了某個文件,在對象被丟棄時不關閉它,而是把文件關閉語句寫在終止器里。這樣做對文件操作會造成問題。如果文件是獨占打開的,則其它對象將無法訪問這個文件。如果文件是共享打開的,則另一訪問該文件的對象直至應用終結仍不能讀到被丟棄對象寫入該文件的新內容。

至少對于文件操作,編碼者應認清Java終止器與C++析構函數之間的差異。

那么,當應用終止,會不會執行應用中的所有finalize()呢?據Bruce Eckel在Thinking in Java里的觀點:“到程序結束的時候,并非所有收尾模塊都會得到調用”。這還僅僅是指應用正常終止的場合,非正常終止呢?

因此,哪些收尾操作可以放在finalize()里,是需要酌酎的。

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
欧美日韩伊人| 国产精品欧美日韩一区| 在线日韩成人| 国产精品99视频| 制服诱惑一区二区| 国产精品麻豆久久| 吉吉日韩欧美| 国产精品一区高清| 日韩高清一区在线| 欧美午夜不卡| 精品欧美激情在线观看| 91欧美日韩| 风间由美中文字幕在线看视频国产欧美| 天堂av在线一区| 国产亚洲精aa在线看| 亚州av日韩av| 亚洲精选成人| 蜜臀精品久久久久久蜜臀| 国产日韩欧美一区在线| 欧美女激情福利| 亚洲高清av| 亚洲激情中文| 欧美日韩18| 国产精品传媒麻豆hd| 欧美日韩亚洲一区三区| 免费美女久久99| 国产精品红桃| 精品国产一区二| 岛国精品一区| 91亚洲国产高清| 午夜日韩在线| 久久国产精品久久w女人spa| 亚洲欧美不卡| 亚洲综合专区| 久久福利毛片| 青草国产精品久久久久久| 欧美日韩91| 久久久精品国产**网站| 久久国产电影| 中文字幕亚洲影视| 欧美一级久久| 欧美丰满日韩| 亚洲毛片一区| 精品国产亚洲一区二区三区在线 | 精品国产aⅴ| 欧美aa在线观看| 久久久男人天堂| 亚洲一区av| 久久香蕉网站| 午夜免费一区| 日韩高清一区在线| 在线手机中文字幕| 亚洲精品电影| 91成人在线精品视频| 鲁鲁在线中文| 日韩三级一区| av免费不卡国产观看| 99在线精品免费视频九九视| 综合激情婷婷| 国产成人精品免费视| 久久蜜桃av| 国产精品99一区二区| 在线精品视频一区| 精品一区视频| 99成人在线| 久久国产乱子精品免费女| 精品一区二区三区中文字幕 | 国产精品自拍区| 久久久久欧美精品| 日韩精品视频网| 午夜在线播放视频欧美| 国产精品极品国产中出| 日韩成人三级| 日韩激情一区二区| 日韩avvvv在线播放| 新版的欧美在线视频| 中文字幕日韩亚洲| 国产理论在线| 日本在线观看不卡视频| 不卡中文字幕| 精品一区二区三区视频在线播放| 国产精品日本欧美一区二区三区| 久久精品网址| 婷婷精品在线观看| 亚洲国产不卡| 精品久久视频| 91精品麻豆| 日韩国产一二三区| 亚洲制服少妇| 久久精品午夜| 日韩美女国产精品| 国产亚洲午夜| 亚洲一级二级| 岛国av在线网站| 欧美日一区二区在线观看| 免费在线欧美视频| 亚洲一本视频| 欧美成人a交片免费看| 国产精品一区二区三区美女 | 免费看久久久| 丝袜亚洲另类欧美| 天堂√中文最新版在线| 免费一级欧美在线观看视频| 亚洲日产av中文字幕| 欧美一区二区性| 麻豆理论在线观看| 六月丁香综合在线视频| 国产精品一区二区三区四区在线观看| 在线看片日韩| 日韩专区一卡二卡| 99久久99久久精品国产片果冰 | 国产精品入口久久| 国产91精品对白在线播放| 国产激情久久| 国产精品毛片久久久| 国产乱码精品一区二区亚洲| 亚洲免费福利一区| 蜜桃视频第一区免费观看| 久久av在线| 亚洲一二av| 午夜久久久久| 91av亚洲| 老色鬼精品视频在线观看播放| 欧美国产极品| 日本不卡在线视频| 亚洲精品日本| 日韩和欧美一区二区三区| 日韩一区二区三区精品| 99久久精品费精品国产| 高清日韩中文字幕| 97精品中文字幕| 日韩在线视频精品| 在线观看免费一区二区| 欧美日韩国产高清| 久久99伊人| 国产精品videossex久久发布| 国产伦精品一区二区三区在线播放| 日本国产欧美| 欧美日韩一区二区高清| sm久久捆绑调教精品一区| 亚洲成人va| 99热精品久久| 99国产精品久久久久久久成人热| 美女网站视频一区| 中文不卡在线| 国产精品资源| 国产网站在线| 中文字幕亚洲精品乱码| 国产欧美激情| 黄色网一区二区| 久久精品高清| 欧美一区91| 日韩欧美精品一区| 日韩亚洲精品在线| 日韩精品免费观看视频| 日韩三区在线| 免费视频最近日韩| 美腿丝袜亚洲一区| 成人影视亚洲图片在线| 在线国产精品一区| 欧美精品97| 久久久五月天| 一区二区国产在线| 亚洲精品**中文毛片| 亚洲国产一区二区在线观看| 日日夜夜免费精品| 91视频一区| 91精品国产自产观看在线| 成人国产精品久久| 免费精品视频| 911精品国产| 蜜桃一区二区三区| 日韩不卡一区二区三区 | 欧美在线91| 国产视频欧美| 精品国产乱码久久久久久1区2匹| 欧美日韩精品一本二本三本| 欧美日韩精品一区二区三区视频 | 国产成人免费| 蜜桃一区二区三区在线观看| 国产精品手机在线播放| 在线观看精品| 日韩福利在线观看| 日韩精品首页| 国产亚洲第一伦理第一区| 久久精品国产99久久| 国产欧美日韩综合一区在线播放| 久久激情中文| 国产亚洲精品美女久久| 免费视频一区二区| 亚洲午夜91| 精品一区二区男人吃奶| 日韩一区二区三区精品| 亚洲视频二区| 亚洲免费高清| 欧美成人基地 | 水野朝阳av一区二区三区| 亚洲精品极品少妇16p| 亚洲精品一区二区妖精| 午夜久久美女|