国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
java 類的生命周期
對于類的生命周期十分模糊,現(xiàn)在經(jīng)過一段時間的學(xué)習(xí),對于類的生命周期的理解已經(jīng)變得清晰,類的生命周期如下所示:

 

   類的裝載就是通過類加載器把.class二進(jìn)制文件轉(zhuǎn)入jvm的方法區(qū),并在堆區(qū)創(chuàng)建描述該類的java.lang.Class對象,用來封裝數(shù)據(jù)。如果要獲取這個Class對象可以通過實例的getClass()或者直接通過的類的靜態(tài)方法.class。JVM規(guī)范允許預(yù)先加載,在預(yù)料到某個類要使用的時候就加載這個類,如果這個類不存在,也不會馬上拋出異常,只有在程序主動使用這個類的時候才會拋出異常,如果這個類一直沒有使用,那么就永遠(yuǎn)不會拋出異常。

 

    對于驗證是驗證加載的二進(jìn)制文件是否符合規(guī)范,如有沒有繼承final類等。

    準(zhǔn)備就是為靜態(tài)成員分配內(nèi)存空間,并設(shè)置默認(rèn)值,byte short long flloat 都是0,對象類型為null,boolean類型為false.

   解析就是對于編譯型常量使用直接的內(nèi)存地址代替變量,如final static int a =10;但是對于在編譯的時候不能得到具體值得變量不做變換,如final static int a =Math.random()。在完成上述工作后,就是對于靜態(tài)變量的初始化。

   對于靜態(tài)變量的初始化時在主動使用的時候才會初始化他們。以下6種情況是主動使用

   創(chuàng)建類的實例,途經(jīng)包括:使用new 創(chuàng)建對象實例,clone等

   使用反射方法

   使用靜態(tài)方法

   使用類或者接口的靜態(tài)變量,給靜態(tài)變量賦值

   創(chuàng)建子類

   把類聲明為啟動類,如: java Test01

   這時候會初始化類的靜態(tài)變量,執(zhí)行靜態(tài)代碼塊

   我想主要說一下類的卸載:只有沒有任何引用指向Class對象的時候,這時候才會卸載類,結(jié)束類的生命周期。在JVM中有三類加載器根加載器,擴(kuò)展加載器,系統(tǒng)加載器,JVM始終保持這幾類加載器的引用,加載器會把其加載的類放在一個集合中,這樣就保留著對于Class對象的引用(不可以操作JVM的加載器),所以由JVM的加載器加載的類是不會卸載的,如果要驗證一個類是否可以卸載,可以自己創(chuàng)建一個類加載器(繼承ClassLoader)Loader,加在一個類Test,然后讓loader的實例賦值為null,loader加載的Class對象也賦值為null;再次創(chuàng)建Loader的實例,并加載Test,這時候可以打印這兩個Test的Class對象的哈希值(是不一樣的),如一下代碼(加載器MyclassLoader.java不給出了):

java 代碼
  1. public class MainTest01    
  2. {   
  3.   
  4.     public static void main(String[] args)    
  5.     {   
  6.         MyClassLoader loader = new MyClassLoader();    
  7.         Class clazz = loader.findClass("Test");   
  8.         System.out.println(clazz.hashCode());   
  9.         loader = null;   
  10.         clazz = null;   
  11.         loader = new MyClassLoader();   
  12.         clazz =loader.findClass("Test");   
  13.         System.out.println(clazz.hashCode());   
  14.     }   
  15.   
  16. }   

   如果注釋掉第9句,那么會拋出類重復(fù)加載異常。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Java程序員從笨鳥到菜鳥之(九十三)深入java虛擬機(jī)(二)——類加載器詳解(上)
深入分析Java ClassLoader原理
Ken Wu's Blog ? java類加載器體系結(jié)構(gòu)(含hotswap原理)
Tomcat 源代碼分析之ClassLoader
深入了解java虛擬機(jī)
java中class.forName和classLoader加載類的區(qū)分
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服