java類的生命週期,從裝載,連接,初始化到卸載,關鍵是什麼時候卸載??

卸載
       關於類的卸載,筆者在單例模式討論篇:單例模式與垃圾回收一文中有過描述,在類使用完以後,若是有下面的狀況,類就會被卸載:java

該類全部的實例都已經被回收,也就是java堆中不存在該類的任何實例。
加載該類的ClassLoader已經被回收。
該類對應的java.lang.Class對象沒有任何地方被引用,沒法在任何地方經過反射訪問該類的方法。
        若是以上三個條件所有知足,jvm就會在方法區垃圾回收的時候對類進行卸載,類的卸載過程其實就是在方法區中清空類信息,java類的整個生命週期就結束了。jvm

 

總結
        作java的朋友對於對象的生命週期可能都比較熟悉,對象基本上都是在jvm的堆區中建立,在建立對象以前,會觸發類加載(加載、鏈接、初始化),當類初始化完成後,根據類信息在堆區中實例化類對象,初始化非靜態變量、非靜態代碼以及默認構造方法,當對象使用完以後會在合適的時候被jvm垃圾收集器回收。讀完本文後咱們知道,對象的生命週期只是類的生命週期中使用階段的主動引用的一種狀況(即實例化類對象)。而類的整個生命週期則要比對象的生命週期長的多。spa

相關文章
相關標籤/搜索