Java課件 第八講 無用對象回收_第1頁
Java課件 第八講 無用對象回收_第2頁
Java課件 第八講 無用對象回收_第3頁
Java課件 第八講 無用對象回收_第4頁
Java課件 第八講 無用對象回收_第5頁
已閱讀5頁,還剩18頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、簡單變量與引用變量簡單變量與引用變量變量的有效期與對象的生存期變量的有效期與對象的生存期無用對象回收無用對象回收lJava語言的變量分類簡單變量l只有固定的幾種類型l字節(jié)型、短整型、整型、長整型、單精度浮點(diǎn)數(shù),雙精度浮點(diǎn)數(shù)、字符型和邏輯型引用變量l除上面列出之外的其它所有類型l例:字符串、數(shù)組、對象等l簡單變量的存儲形式存放的是數(shù)值本身利用賦值語句將變量a賦給變量b時,變量a的值將復(fù)制給變量b定義一個簡單變量之后,它立刻有隨機(jī)的數(shù)值,如果直接使用該變量,會得到無法預(yù)料的結(jié)果簡單變量需要進(jìn)行初始化,以保證“先賦值,再使用”的原則a5b5b=a;l引用變量的存儲形式存儲的僅僅是一個地址(指針),指

2、針指向?qū)嶋H的對象所在的內(nèi)存地址使用前必須初始化,使其指向內(nèi)存中實(shí)際存在的一個對象用賦值語句將變量a賦給變量b時,對象不會復(fù)制,而是直接讓b也指向同一個對象abb=a;l引用變量的初始化當(dāng)定義一個引用變量時,它只是空指針,不指向任何地址例:BoardGame myGame;用new關(guān)鍵字創(chuàng)建對象時,Java會在內(nèi)存中分配適當(dāng)?shù)目臻g,將新建對象放進(jìn)該空間例:new BoardGame(); myGamel引用變量的初始化用new關(guān)鍵字創(chuàng)建的對象之后,如果不立即用一個變量指向,則對象會丟失。new關(guān)鍵字應(yīng)當(dāng)緊跟在賦值語句后面例:BoardGame myGame = new BoardGame();如

3、果給引用變量賦一個新的對象,系統(tǒng)會新建一個對象,丟棄原先的對象例:myGame = new BoardGame();l類成員變量的初始化簡單變量l默認(rèn)初始化為0(整型、浮點(diǎn)型變量),空值(字符型變量),或false(邏輯變量)l可以直接使用引用變量l默認(rèn)初始化為空指針,不指向任何對象l使用前必須先用new關(guān)鍵字進(jìn)行初始化l引用變量與對象的分離在Java中,引用變量與對象是分開的通過賦值語句,多個變量可以指向同一對象存在沒有變量的對象,如字符串存在沒有對象的變量,如尚未初始化的變量l變量的有效期對象的生存期l引用變量的有效期從變量定義開始,到變量所處區(qū)塊結(jié)束為止三類變量的有效期l類變量(類的靜態(tài)

4、變量)l類的成員變量l函數(shù)中的局部變量有效期長度比較l類變量成員變量局部變量l類變量的有效期類變量的產(chǎn)生:當(dāng)程序第一次出現(xiàn)類時,不管是否創(chuàng)建了類的實(shí)例,都會為類形成一個模板,此時類變量已經(jīng)在模板中形成,并且自動初始化;類變量的消失:類變量的有效期直到類消失為止,而一般情況下,除非程序中止,否則類不會消失的。因此類變量的有效期直到程序結(jié)束為止。l成員變量的有效期成員變量的產(chǎn)生:從對象生成起。當(dāng)用new關(guān)鍵字生成一個對象之后,它的成員變量就產(chǎn)生了,并且自動初始化;成員變量的消失:至對象被回收為止。當(dāng)對象失去作用,被自動回收之后,成員變量即自動消失;l局部變量的有效期局部變量的產(chǎn)生:從變量定義之處開

5、始。局部變量不會自動初始化,需要手動初始化之后才能使用;局部變量的消失:到變量所在的區(qū)塊結(jié)束位置為止;區(qū)塊的含義:函數(shù)中用大括號括起來的部分,不一定是整個函數(shù);l局部變量的有效期public class LocalVarDemo public static void main(String args) String var1 = 局部變量,在整個函數(shù)內(nèi)都有效。; if (true) String var2 = 局部變量,只在if塊內(nèi)有效。; System.out.println(var2); System.out.println(var1); else System.out.println(v

6、ar2); String var2 = 另一個局部變量,定義在if塊之后,因此不會混淆。; System.out.println(var2); System.out.println(var1);l對象的生存期對象的產(chǎn)生:被new關(guān)鍵字生成開始對象的消失:直到該對象不能再通過任何變量被訪問到為止只要對象被某個引用變量所指向,不管變量是類變量、成員變量,還是局部變量,對象都會一直生存著l對象生存期案例說明public class ObjLifeDemo public String pubStr1; public String GetStr() String innerStr = GetStr函數(shù)內(nèi)

7、部生成的字符串; return innerStr; public static void main(String args) String outerStr; if (true) ObjLifeDemo aDemo = new ObjLifeDemo(); aDemo.pubStr1 = aDemo.GetStr(); System.out.println(aDemo.pubStr1); outerStr = aDemo.pubStr1; System.out.println(outerStr); l對象生存期案例說明離開if區(qū)塊之后,aDemo變量的有效期過了,不再有變量指向aDemo對象,

8、因此aDemo對象的生存期也過了,被自動清除aDemo對象的pubStr1變量消失,但outerStr變量還存在,因此字符串變量依然存在在if區(qū)塊外的System.out.println函數(shù)中再次顯示字符串的內(nèi)容。l對象生存期案例說明在程序末尾,outerStr變量的有效期結(jié)束,再沒有變量指向字符串對象,字符串對象的生存期結(jié)束,被系統(tǒng)自動回收。程序執(zhí)行的結(jié)果:l無用對象回收的機(jī)理當(dāng)一個對象不再有任何變量指向它時,這個對象不可能再被訪問得到,該對象即成為無用對象,列入名單一旦回收器開始工作,無用對象就會被銷毀,回收所占用的內(nèi)存避免了內(nèi)存泄漏問題,改變了編程思想,方便了編程工作l無用對象回收的機(jī)理

9、無用對象回收需要耗費(fèi)一定的計(jì)算機(jī)時間,因此不會隨時運(yùn)行對象即使已經(jīng)無用,還可能在內(nèi)存中存在相當(dāng)時間在一個對象被拋棄前,一定要關(guān)閉它所附帶的功能,包括:關(guān)閉打開的文件,關(guān)閉打開的數(shù)據(jù)庫連接,抹去屏幕上顯示的圖形等l對象的finalize()函數(shù)在對象被銷毀時自動調(diào)用,用來完成銷毀前的最后操作無法預(yù)知對象何時才會被銷毀,因此也無法預(yù)知對象的finalize函數(shù)何時調(diào)用finalize函數(shù)的用途:在Java和C+程序混合編程中,如果在C+程序中動態(tài)分配內(nèi)存,則需要在Java對象的finalize函數(shù)中調(diào)用C+的函數(shù)釋放該內(nèi)存l控制無用對象回收的時間運(yùn)行無用對象回收過程會耗費(fèi)一定的計(jì)算機(jī)時間,從而降低速度有時希望在空閑時間運(yùn)行回收過程,而在緊張計(jì)算時間不運(yùn)行回收過程通過下面兩行指令來運(yùn)行回收過程:System.runFinal

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論