Java對象在JVM中的生命周期詳解
概念
在Java中,對象的生命周期包括以下幾個階段:
- 創(chuàng)建階段(Created)
- 應(yīng)用階段(In Use)
- 不可見階段(Invisible)
- 不可達階段(Unreachable)
- 收集階段(Collected)
- 終結(jié)階段(Finalized)
- 對象空間重分配階段(De-allocated)
Java對象在JVM中的生命周期
當你通過new語句創(chuàng)建一個java對象時,JVM就會為這個對象分配一塊內(nèi)存空間,只要這個對象被引用變量引用了,那么這個對象就會一直駐留在內(nèi)存中,否則,它就會結(jié)束生命周期,JVM會在合適的時候回收它所占用的內(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)建了一個Teacher對象和一個個Student對象,并且定義了2個引用變量t,s,分別引用了Teacher對象,Student對象
建立了Teacher對象和Student對象的雙向關(guān)聯(lián)關(guān)系,表示Student對象的teacher屬性引用了Teacher對象,Teacher對象的students集合存放了Student對象的引用。
把s變量置為了null,s變量不再引用Student對象了,但是Teacher對象的students仍然存放著Student對象的引用,那么Student對象就會結(jié)束生命周期;把t變量置為null后,Teacher不再被任何引用變量所引用,自然Teacher對象的引用也不存在了,也就結(jié)束了周期。
雖然最后Teacher和Student之前還存在著雙向引用,但是在程序中并沒有任何引用變量來引用這兩個對象,程序也就無法訪問到這個兩個變量,最終還是被JVM的垃圾回收器當作無用的對象所回收。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot?@GroupSequenceProvider注解實現(xiàn)bean多屬性聯(lián)合校驗的示例代碼
這篇文章主要介紹了SpringBoot?@GroupSequenceProvider注解實現(xiàn)bean多屬性聯(lián)合校驗,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-08-08java8 LocalDate LocalDateTime等時間類用法實例分析
這篇文章主要介紹了java8 LocalDate LocalDateTime等時間類用法,結(jié)合具體實例形式分析了LocalDate、LocalTime、LocalDateTime等日期時間相關(guān)類的功能與具體使用技巧,需要的朋友可以參考下2017-04-04SpringBoot實現(xiàn)jsonp跨域通信的方法示例
這篇文章主要介紹了SpringBoot實現(xiàn)jsonp跨域通信的方法示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-09-09使用Mybatis-plus策略自動更新數(shù)據(jù)庫時間失敗問題解決
這篇文章主要介紹了使用Mybatis-plus策略自動更新數(shù)據(jù)庫時間失敗問題解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-10-10基于Spring上下文工具類?ApplicationContextUtil
這篇文章主要介紹了基于Spring上下文工具類?ApplicationContextUtil,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-11-11