溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Java對(duì)象在JVM中的生命周期詳解

發(fā)布時(shí)間:2020-10-01 09:35:08 來(lái)源:腳本之家 閱讀:175 作者:潘佳琦 欄目:編程語(yǔ)言

概念

在Java中,對(duì)象的生命周期包括以下幾個(gè)階段:

  • 創(chuàng)建階段(Created)
  • 應(yīng)用階段(In Use)
  • 不可見(jiàn)階段(Invisible)
  • 不可達(dá)階段(Unreachable)
  • 收集階段(Collected)
  • 終結(jié)階段(Finalized)
  • 對(duì)象空間重分配階段(De-allocated)

Java對(duì)象在JVM中的生命周期詳解

Java對(duì)象在JVM中的生命周期

當(dāng)你通過(guò)new語(yǔ)句創(chuàng)建一個(gè)java對(duì)象時(shí),JVM就會(huì)為這個(gè)對(duì)象分配一塊內(nèi)存空間,只要這個(gè)對(duì)象被引用變量引用了,那么這個(gè)對(duì)象就會(huì)一直駐留在內(nèi)存中,否則,它就會(huì)結(jié)束生命周期,JVM會(huì)在合適的時(shí)候回收它所占用的內(nèi)存。

偽代碼:

class Teacher:
  //屬性
  String  name;
  Set<Student> students;
 
  //有參構(gòu)造函數(shù)
  Teacher(String tname, Set<Student> students );
 
  //setter,getter省略
 
class Student:
  //屬性
  String name;
  Teacher teachrer;
 
  //有參構(gòu)造函數(shù)
  Student(String sname,Teacher teacher);
  
  //setter,getter省略
main:
 Teacher t = new Teacher("張三",new hashSet());
 
 Student s = new Studnet("李四",null);
 
 s.getTeacher(t);
 t.getStudnet().add(s);


 s = null;
 t = null;

創(chuàng)建了一個(gè)Teacher對(duì)象和一個(gè)個(gè)Student對(duì)象,并且定義了2個(gè)引用變量t,s,分別引用了Teacher對(duì)象,Student對(duì)象

Java對(duì)象在JVM中的生命周期詳解

建立了Teacher對(duì)象和Student對(duì)象的雙向關(guān)聯(lián)關(guān)系,表示Student對(duì)象的teacher屬性引用了Teacher對(duì)象,Teacher對(duì)象的students集合存放了Student對(duì)象的引用。

Java對(duì)象在JVM中的生命周期詳解

把s變量置為了null,s變量不再引用Student對(duì)象了,但是Teacher對(duì)象的students仍然存放著Student對(duì)象的引用,那么Student對(duì)象就會(huì)結(jié)束生命周期;把t變量置為null后,Teacher不再被任何引用變量所引用,自然Teacher對(duì)象的引用也不存在了,也就結(jié)束了周期。

Java對(duì)象在JVM中的生命周期詳解

雖然最后Teacher和Student之前還存在著雙向引用,但是在程序中并沒(méi)有任何引用變量來(lái)引用這兩個(gè)對(duì)象,程序也就無(wú)法訪問(wèn)到這個(gè)兩個(gè)變量,最終還是被JVM的垃圾回收器當(dāng)作無(wú)用的對(duì)象所回收。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持億速云。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI