91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java對象在JVM中的生命周期詳解

發布時間:2020-10-01 09:35:08 來源:腳本之家 閱讀:183 作者:潘佳琦 欄目:編程語言

概念

在Java中,對象的生命周期包括以下幾個階段:

  • 創建階段(Created)
  • 應用階段(In Use)
  • 不可見階段(Invisible)
  • 不可達階段(Unreachable)
  • 收集階段(Collected)
  • 終結階段(Finalized)
  • 對象空間重分配階段(De-allocated)

Java對象在JVM中的生命周期詳解

Java對象在JVM中的生命周期

當你通過new語句創建一個java對象時,JVM就會為這個對象分配一塊內存空間,只要這個對象被引用變量引用了,那么這個對象就會一直駐留在內存中,否則,它就會結束生命周期,JVM會在合適的時候回收它所占用的內存。

偽代碼:

class Teacher:
  //屬性
  String  name;
  Set<Student> students;
 
  //有參構造函數
  Teacher(String tname, Set<Student> students );
 
  //setter,getter省略
 
class Student:
  //屬性
  String name;
  Teacher teachrer;
 
  //有參構造函數
  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;

創建了一個Teacher對象和一個個Student對象,并且定義了2個引用變量t,s,分別引用了Teacher對象,Student對象

Java對象在JVM中的生命周期詳解

建立了Teacher對象和Student對象的雙向關聯關系,表示Student對象的teacher屬性引用了Teacher對象,Teacher對象的students集合存放了Student對象的引用。

Java對象在JVM中的生命周期詳解

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

Java對象在JVM中的生命周期詳解

雖然最后Teacher和Student之前還存在著雙向引用,但是在程序中并沒有任何引用變量來引用這兩個對象,程序也就無法訪問到這個兩個變量,最終還是被JVM的垃圾回收器當作無用的對象所回收。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

阿拉善左旗| 上虞市| 驻马店市| 云安县| 正镶白旗| 大连市| 石河子市| 砚山县| 涟水县| 石景山区| 秦皇岛市| 延安市| 巨野县| 大庆市| 泽州县| 宝清县| 图木舒克市| 子长县| 罗城| 洛宁县| 昌都县| 南开区| 天津市| 阜平县| 文化| 崇明县| 青浦区| 金湖县| 岳西县| 静安区| 马公市| 叙永县| 始兴县| 即墨市| 凉山| 吴堡县| 荥经县| 池州市| 焦作市| 陆河县| 扶沟县|