

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、方法一:垃圾回收器方法一:垃圾回收器垃圾回收器是Java平臺(tái)中用的最頻繁的一種對(duì)象銷毀方法。垃圾回收器會(huì)全程偵測(cè)Java應(yīng)用程序的運(yùn)行情況。當(dāng)反先有些對(duì)象成為垃圾時(shí),垃圾回收器就會(huì)銷毀這些對(duì)象,并開釋這些對(duì)象所占用的內(nèi)存空間。在這里,程序開發(fā)職員需要知道,在哪些情況下垃圾回收器會(huì)以為這些對(duì)象是垃圾對(duì)象。通常情況下,如果發(fā)生以下兩種情況時(shí),系統(tǒng)會(huì)以為這些對(duì)象是垃圾對(duì)象,需要銷毀。一是將一個(gè)NULL值賦值給對(duì)象。如用戶先建立了一個(gè)對(duì)象str
2、1。對(duì)象用完了之后,再利用賦值語(yǔ)句,將NULL值賦值給這個(gè)對(duì)象str1,即使用str1=NULL的方式將NULL值賦值給這個(gè)對(duì)象。此時(shí)這個(gè)對(duì)象與內(nèi)存中對(duì)象的存儲(chǔ)地址之間就失往了聯(lián)系。此時(shí)內(nèi)存中的對(duì)象就似乎成為了一個(gè)無(wú)主的對(duì)象,就會(huì)被垃圾回收器銷毀。不過這也有例外。如現(xiàn)在同一個(gè)對(duì)象有兩個(gè)名字,分別為str1與str2。此時(shí)若只是將NULL值賦值給str1,那么內(nèi)存的這個(gè)對(duì)象仍然有一個(gè)主人,即str2。此時(shí)這個(gè)對(duì)象還暫時(shí)不會(huì)被垃圾回收器回收
3、。除非在代碼中講這個(gè)對(duì)象所關(guān)聯(lián)的所有對(duì)象名字都賦值為NULL。此時(shí)這個(gè)對(duì)象才變?yōu)闊o(wú)主的對(duì)象,才會(huì)被垃圾回收器回收。在Java中定義自己的工具庫(kù)二是對(duì)象其超出了作用范圍,這個(gè)這個(gè)對(duì)象就被以為是垃圾對(duì)象,被被垃圾回收器回收并開釋內(nèi)存。實(shí)在對(duì)象跟變量一樣,其也有作用域。當(dāng)超過這個(gè)作用域的話,跟變量一樣,這個(gè)對(duì)象也就無(wú)效了,其他地方不能夠再引用這個(gè)對(duì)象。此時(shí)這個(gè)對(duì)象就是名存實(shí)亡了。為此垃圾回收器也把這種超過作用范圍的對(duì)象當(dāng)作垃圾對(duì)象來(lái)處理。所以
4、說,假如程序員要讓對(duì)象中的某些成員變量或者成員方法一直有效的話,就需要采用static關(guān)鍵字,讓其在變量銷毀時(shí)仍然有效,或則仍然可以調(diào)用這些成員變量與成員方法。方法二:方法二:finalize方法方法固然說垃圾回收器已經(jīng)是一個(gè)比較完善的對(duì)象銷毀機(jī)制,但是其并不能夠解決Java語(yǔ)言中所有對(duì)象的銷毀題目。如Java語(yǔ)言平臺(tái)中,創(chuàng)建對(duì)象主要有兩種方式,分別為利用NEW關(guān)鍵字來(lái)創(chuàng)建(這是對(duì)象創(chuàng)建的主要方式)與不適利用NEW關(guān)鍵字來(lái)創(chuàng)建。假如Ja
5、va語(yǔ)言中某些對(duì)象不是利用new關(guān)鍵字為對(duì)象在內(nèi)存中分配一塊存儲(chǔ)區(qū)域,那么這種類型的對(duì)象就不能夠被垃圾回收站回收。即使在代碼中將NULL值賦值給這個(gè)對(duì)象,仍然不能夠被垃圾回收器回收。固然這種對(duì)象比較少,但是究竟存在。為了解決這類對(duì)象的回收與內(nèi)存開釋題目,在Java語(yǔ)言中提供了一個(gè)finalize的方法。通過這個(gè)方法可以顯示的讓系統(tǒng)回收這個(gè)對(duì)象。這是一個(gè)Object類的方法。通常情況下,這個(gè)方法是被聲明為protected。程序開發(fā)職員在
6、必要的時(shí)候,可以在自定的類中定義這個(gè)方法。假設(shè)現(xiàn)在程序開發(fā)職員定義了這個(gè)方法,那么在對(duì)象銷毀時(shí),垃圾回收器會(huì)先采用這個(gè)方法來(lái)銷毀對(duì)象。并且在下一次垃圾回收動(dòng)作發(fā)生時(shí),終極開釋對(duì)象的內(nèi)存??梢姡捎昧薴inalize方法,固然可以讓這個(gè)對(duì)象被垃圾回收器回收,但是其原理是不同的。垃圾回收器是先調(diào)用這個(gè)方法,然后在下次運(yùn)行這個(gè)垃圾回收作業(yè)時(shí)再開釋其占用的內(nèi)存。另外需要留意的是,這個(gè)方法并不一定會(huì)保證發(fā)生。也就是說,相對(duì)來(lái)講,其安全性并沒有垃圾
7、回收器那么的高。故在實(shí)際創(chuàng)建對(duì)象時(shí),最好還是采用new關(guān)鍵字來(lái)創(chuàng)建比較安全,也更加的方便。由于在利用New關(guān)鍵字來(lái)創(chuàng)建對(duì)象時(shí),在代碼中不需要加進(jìn)另外額外的代碼。所以從安全性與便利性上來(lái)說,筆者都建議采用new方法為對(duì)象在內(nèi)存中分配存儲(chǔ)區(qū)域,而不建議采用其他的方式。在采用垃圾回收器的時(shí)候,其會(huì)自動(dòng)檢測(cè)對(duì)象的狀態(tài),而不需要程序員告知。其發(fā)現(xiàn)對(duì)象超出了作業(yè)域范圍或者對(duì)象被重置為空時(shí),其就會(huì)被自動(dòng)銷毀并開釋對(duì)象所占用的內(nèi)存,這種方式處理起來(lái)相對(duì)
8、來(lái)說更加的安全與便利。方法三:利用方法三:利用System.gc方法強(qiáng)制啟動(dòng)垃圾回收器方法強(qiáng)制啟動(dòng)垃圾回收器垃圾回收器實(shí)在自動(dòng)啟動(dòng)的。也就是說,垃圾回收機(jī)制起會(huì)自動(dòng)監(jiān)測(cè)垃圾對(duì)象,并在適當(dāng)?shù)臅r(shí)候啟動(dòng)垃圾回收器來(lái)銷毀對(duì)象,開釋內(nèi)存。但是這個(gè)垃圾回收器也會(huì)有分歧作的時(shí)候。也就是說,這個(gè)垃圾回收器不受程序代碼的控制,其具體執(zhí)行的時(shí)間也會(huì)不確定,從而導(dǎo)致上面的finalize方法無(wú)法執(zhí)行,某些對(duì)象無(wú)法及時(shí)銷毀。為此有時(shí)候需要利用代碼來(lái)強(qiáng)制啟動(dòng)垃圾
9、回收器,來(lái)銷毀對(duì)象。筆者平時(shí)在給一些學(xué)員培訓(xùn)時(shí),往往將這個(gè)垃圾回收器比喻成醫(yī)院里的。平時(shí)的時(shí)候,會(huì)每隔一段時(shí)間來(lái)進(jìn)行查房,看看病人有沒有什么題目。不過在必要的時(shí)候,病人也可以通過警鈴來(lái)呼喚。如當(dāng)鹽水掛完了就可以要求來(lái)更換鹽水。實(shí)在這個(gè)定期查房就似乎是垃圾回收器會(huì)根據(jù)應(yīng)用程序的運(yùn)行情況來(lái)定時(shí)的或者不定時(shí)的啟動(dòng)。而這個(gè)警鈴就似乎是這個(gè)System.go方法。在有需要的時(shí)候,程序開發(fā)職員可以在代碼中調(diào)用這個(gè)方法,來(lái)強(qiáng)制讓來(lái)病房,即強(qiáng)制啟動(dòng)這個(gè)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 面向?qū)ο蠓椒ㄔ谝粋€(gè)在線考試系統(tǒng)中的應(yīng)用.pdf
- 編寫一個(gè)java程序片斷-定義一個(gè)表示學(xué)生的類student
- 一個(gè)基于Java的網(wǎng)絡(luò)計(jì)算模型.pdf
- 系統(tǒng)創(chuàng)建一個(gè)線程內(nèi)核對(duì)象。
- 一個(gè)牛人給java初學(xué)者的建議
- 一個(gè)胖子瘦身方法
- java課程設(shè)計(jì)---設(shè)計(jì)一個(gè)記事本
- 3 一個(gè)接一個(gè)
- 3 一個(gè)接一個(gè) 學(xué)案
- 教學(xué)設(shè)計(jì) 一個(gè)接一個(gè)
- 《一個(gè)接一個(gè)》教學(xué)設(shè)計(jì)
- 3.一個(gè)接一個(gè)
- java課程設(shè)計(jì)--編寫一個(gè)記事本程序
- java課程設(shè)計(jì)-編寫一個(gè)記事本程序
- 用java設(shè)計(jì)一個(gè)計(jì)算器畢業(yè)論文
- 關(guān)注每一個(gè)發(fā)展每一個(gè)幸福每一個(gè)
- 一個(gè)舞臺(tái)與一個(gè)演員
- 3.一個(gè)接一個(gè)
- 3.一個(gè)接一個(gè)
- 3.一個(gè)接一個(gè)
評(píng)論
0/150
提交評(píng)論