Java虛擬機深入學習之二: Java虛擬機的垃圾收集器

        程序語言發展的歷史上,Lisp是第一門使用內存動態分配和垃圾收集技術的語言。

       Java虛擬機的垃圾收集器(GC)需要完成的三件事:  1. 哪些內存需要回收     2. 什麼時候回收    3. 如何回收

      

       判斷對象生命週期的兩種算法:

               1. 引用計數算法:  實現簡單,使用案例有:COM, Python, ObjectC。 但是Java虛擬機沒有使用此算法,最主要是因爲它很難解決對象之間的相互循環引用的問題。


               2. 根搜索算法(GC Roots) : 主流的商業程序語言,例如Java, C#,Lisp都是採用此種算法。



       Java虛擬機判斷一個類是否是無用類:  

                1. 該類所有的實例都已經被回收,Java堆中不存在該類的任何實例。

                2. 加載該類的ClassLoader已經被回收

                3. 該類對應的java.lang.class對象沒有在任何地方被引用,無法在任何地方通過反射訪問該類的方法


          

發佈了115 篇原創文章 · 獲贊 13 · 訪問量 63萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章