對(duì)象和垃圾回收

當(dāng)程序創(chuàng)建對(duì)象,數(shù)組等引用類型的實(shí)體時(shí),系統(tǒng)會(huì)在堆內(nèi)存中為之分配一塊內(nèi)存區(qū),對(duì)象就保存在這塊內(nèi)存區(qū)里面,當(dāng)這塊內(nèi)存不再被任何引用類型變量引用時(shí),這塊內(nèi)存就成了垃圾,等待垃圾回收機(jī)制進(jìn)行回收.

  • 1.垃圾回收機(jī)制只會(huì)回收堆內(nèi)存中的資源,不會(huì)回收任何的物理資源(比如數(shù)據(jù)庫連接,網(wǎng)絡(luò)IO等資源)
  • 2.程序無法精確的控制垃圾回收的運(yùn)行,垃圾回收會(huì)在合適的時(shí)候執(zhí)行.
  • 3.在垃圾回收機(jī)制回收任何對(duì)象之前,總會(huì)調(diào)用它的finalize()方法,該方法可能使該對(duì)象重新復(fù)活(讓一個(gè)引用變量重新引用該對(duì)象),從而導(dǎo)致垃圾回收機(jī)制取消回收.

可達(dá)狀態(tài):
可恢復(fù)狀態(tài):
不可達(dá)狀態(tài):


三種狀態(tài)

當(dāng)某個(gè)對(duì)象被其他類的類變量所引用時(shí),只有該類被銷毀后,該對(duì)象才進(jìn)入可恢復(fù)狀態(tài);當(dāng)某個(gè)對(duì)象被一個(gè)對(duì)象的實(shí)例變量所引用,只有當(dāng)該對(duì)象被銷毀后,該對(duì)象才會(huì)進(jìn)入可恢復(fù)狀態(tài).

強(qiáng)制垃圾回收

程序只能控制一個(gè)對(duì)象何時(shí)不再被任何引用變量引用,決不能控制它何時(shí)被回收.
程序無法精確的控制java回收的時(shí)機(jī),但依然可以控制系統(tǒng)進(jìn)行垃圾回收-----這種強(qiáng)制只是通知系統(tǒng)進(jìn)行垃圾回收,但系統(tǒng)什么時(shí)候進(jìn)行垃圾回收依然不確定.
強(qiáng)制系統(tǒng)進(jìn)行垃圾回收的兩種方式:

  • 1.調(diào)用System類的gc()靜態(tài)方法:System.gc()
  • 2.調(diào)用Runtime對(duì)象的gc()實(shí)例方法:Runtime.getRuntime().gc().

這種強(qiáng)制只是建議系統(tǒng)立即進(jìn)行垃圾回收,系統(tǒng)完全有可能不立即進(jìn)行垃圾回收,垃圾回收機(jī)制也不會(huì)對(duì)程序的建議完全置之不理:垃圾回收機(jī)制會(huì)在收到通知之后,盡快進(jìn)行垃圾回收.

只有當(dāng)程序認(rèn)為需要更多的額外內(nèi)存時(shí),垃圾回收機(jī)制才會(huì)進(jìn)行垃圾回收.即如果某個(gè)失去引用的對(duì)象只占用了少量的內(nèi)存,而且系統(tǒng)沒有產(chǎn)生嚴(yán)重的內(nèi)存需求,因此垃圾回收機(jī)制并沒有試圖回收該對(duì)象所占用的資源,所以該對(duì)象的finalize()方法也不會(huì)得到調(diào)用.

finalize()方法的四個(gè)特點(diǎn):

  • 1永遠(yuǎn)不要主動(dòng)調(diào)用某個(gè)對(duì)象的finalize()方法,該方法應(yīng)該交給垃圾回收機(jī)制調(diào)用
  • 2finalize()方法何時(shí)被調(diào)用,是否被調(diào)用具有不確定性,不要把finalize()方法當(dāng)成一定會(huì)被執(zhí)行的方法
  • 3當(dāng)JVM執(zhí)行可恢復(fù)對(duì)象的finalize()方法時(shí),可能使對(duì)象或系統(tǒng)中其他對(duì)象重新變成可達(dá)狀態(tài)
  • 4當(dāng)JVM執(zhí)行finalize()方法時(shí)出現(xiàn)異常時(shí),垃圾回收機(jī)制不會(huì)報(bào)告異常,程序繼續(xù)進(jìn)行.

由于finalize()方法不一定會(huì)被執(zhí)行,因此如果想要清理某個(gè)類里打開的資源,則不要放在finalize()方法中進(jìn)行清理.

java中對(duì)象的4種引用方式
強(qiáng)引用:程序創(chuàng)建一個(gè)對(duì)象,并把這個(gè)對(duì)象賦值給一個(gè)引用變量,程序通過該引用變量來操作實(shí)際的對(duì)象.
軟引用:
弱引用
虛引用

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末挥唠,一起剝皮案震驚了整個(gè)濱河市顶岸,隨后出現(xiàn)的幾起案子印叁,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,858評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異孵构,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)烟很,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門颈墅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人雾袱,你說我怎么就攤上這事恤筛。” “怎么了芹橡?”我有些...
    開封第一講書人閱讀 165,282評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵毒坛,是天一觀的道長。 經(jīng)常有香客問我林说,道長粘驰,這世上最難降的妖魔是什么屡谐? 我笑而不...
    開封第一講書人閱讀 58,842評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮蝌数,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘度秘。我一直安慰自己顶伞,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,857評(píng)論 6 392
  • 文/花漫 我一把揭開白布剑梳。 她就那樣靜靜地躺著唆貌,像睡著了一般。 火紅的嫁衣襯著肌膚如雪垢乙。 梳的紋絲不亂的頭發(fā)上锨咙,一...
    開封第一講書人閱讀 51,679評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音追逮,去河邊找鬼酪刀。 笑死,一個(gè)胖子當(dāng)著我的面吹牛钮孵,可吹牛的內(nèi)容都是我干的骂倘。 我是一名探鬼主播,決...
    沈念sama閱讀 40,406評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼巴席,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼历涝!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起漾唉,我...
    開封第一講書人閱讀 39,311評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤荧库,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后赵刑,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體分衫,經(jīng)...
    沈念sama閱讀 45,767評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年料睛,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了丐箩。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,090評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡恤煞,死狀恐怖屎勘,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情居扒,我是刑警寧澤概漱,帶...
    沈念sama閱讀 35,785評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站喜喂,受9級(jí)特大地震影響瓤摧,放射性物質(zhì)發(fā)生泄漏竿裂。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,420評(píng)論 3 331
  • 文/蒙蒙 一照弥、第九天 我趴在偏房一處隱蔽的房頂上張望腻异。 院中可真熱鬧,春花似錦这揣、人聲如沸悔常。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽机打。三九已至,卻和暖如春片迅,著一層夾襖步出監(jiān)牢的瞬間残邀,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評(píng)論 1 271
  • 我被黑心中介騙來泰國打工柑蛇, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留芥挣,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,298評(píng)論 3 372
  • 正文 我出身青樓唯蝶,卻偏偏與公主長得像九秀,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子粘我,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,033評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 1.什么是垃圾回收鼓蜒? 垃圾回收(Garbage Collection)是Java虛擬機(jī)(JVM)垃圾回收器提供...
    簡欲明心閱讀 89,501評(píng)論 17 311
  • 1. 垃圾回收的意義在C++中,對(duì)象所占的內(nèi)存在程序結(jié)束運(yùn)行之前一直被占用征字,在明確釋放之前不能分配給其它對(duì)象都弹;而在...
    愛情小傻蛋閱讀 935評(píng)論 0 11
  • Java引用的種類 1.對(duì)象在內(nèi)存中的狀態(tài) 對(duì)于JVM的垃圾回收機(jī)制來說,是否回收一個(gè)對(duì)象的標(biāo)準(zhǔn)在于:是否還有引用...
    Jack921閱讀 3,862評(píng)論 0 3
  • 每日推薦: 每日一歌――陳奕迅《不如這樣》 每日一影――許鞍華《玉觀音》 開始記錄的第七十五天匙姜。 輕飄飄的...
    薩拉芯雪閱讀 105評(píng)論 0 1
  • - (BOOL) textView:(UITextView *)textView shouldChangeText...
    pond閱讀 288評(píng)論 0 0