亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

詳解JAVA類加載機制(推薦)

2020-01-31 16:50:29
字體:
來源:轉載
供稿:網友

JAVA源碼編譯由三個過程組成:

1、源碼編譯機制。

2、類加載機制

3、類執行機制

我們這里主要介紹編譯和類加載這兩種機制。

一、源碼編譯

代碼編譯由JAVA源碼編譯器來完成。主要是將源碼編譯成字節碼文件(class文件)。字節碼文件格式主要分為兩部分:常量池和方法字節碼。

二、類加載

類的生命周期是從被加載到虛擬機內存中開始,到卸載出內存結束。過程共有七個階段,其中到初始化之前的都是屬于類加載的部分

加載----驗證----準備----解析-----初始化----使用-----卸載

系統可能在第一次使用某個類時加載該類,也可能采用預加載機制來加載某個類,當運行某個java程序時,會啟動一個java虛擬機進程,兩次運行的java程序處于兩個不同的JVM進程中,兩個jvm之間并不會共享數據。

1、加載階段

這個流程中的加載是類加載機制中的一個階段,這兩個概念不要混淆,這個階段需要完成的事情有:

1)通過一個類的全限定名來獲取定義此類的二進制字節流。

2)將這個字節流所代表的靜態存儲結構轉化為方法區的運行時數據結構。

3)在java堆中生成一個代表這個類的Class對象,作為訪問方法區中這些數據的入口。

由于第一點沒有指明從哪里獲取以及怎樣獲取類的二進制字節流,所以這一塊區域留給我開發者很大的發揮空間。這個我在后面的類加載器中在進行介紹。

2、準備階段

這個階段正式為類變量(被static修飾的變量)分配內存并設置類變量初始值,這個內存分配是發生在方法區中。

1、注意這里并沒有對實例變量進行內存分配,實例變量將會在對象實例化時隨著對象一起分配在JAVA堆中。

2、這里設置的初始值,通常是指數據類型的零值。

private static int a = 3;
 這個類變量a在準備階段后的值是0,將3賦值給變量a是發生在初始化階段。

3、初始化階段

初始化是類加載機制的最后一步,這個時候才正真開始執行類中定義的JAVA程序代碼。在前面準備階段,類變量已經賦過一次系統要求的初始值,在初始化階段最重要的事情就是對類變量進行初始化,關注的重點是父子類之間各類資源初始化的順序。

java類中對類變量指定初始值有兩種方式:1、聲明類變量時指定初始值;2、使用靜態初始化塊為類變量指定初始值。

初始化的時機

1)創建類實例的時候,分別有:1、使用new關鍵字創建實例;2、通過反射創建實例;3、通過反序列化方式創建實例。

new Test();Class.forName(“com.mengdd.Test”);

2)調用某個類的類方法(靜態方法)

Test.doSomething();

3)訪問某個類或接口的類變量,或為該類變量賦值。 

int b=Test.a;Test.a=b;

4)初始化某個類的子類。當初始化子類的時候,該子類的所有父類都會被初始化。

5)直接使用java.exe命令來運行某個主類。

除了上面幾種方式會自動初始化一個類,其他訪問類的方式都稱不會觸發類的初始化,稱為被動引用。

1、子類引用父類的靜態變量,不會導致子類初始化。

public class SupClass{ public static int a = 123; static {  System.out.println("supclass init"); }}public class SubClass extends SupClass{ static {  System.out.println("subclass init"); }}public class Test{ public static void main(String[] args) {  System.out.println(SubClass.a); }}

執行結果:

supclass init
123

2、通過數組定義引用類,不會觸發此類的初始化

public class SupClass{ public static int a = 123; static {  System.out.println("supclass init"); }}public class Test{ public static void main(String[] args) {  SupClass[] spc = new SupClass[10]; }}

執行結果:

3、引用常量時,不會觸發該類的初始化

public class ConstClass{ public static final String A= "MIGU"; static {  System.out.println("ConstCLass init"); }}public class TestMain{ public static void main(String[] args) {  System.out.println(ConstClass.A); }}

執行結果:

MIGU

用final修飾某個類變量時,它的值在編譯時就已經確定好放入常量池了,所以在訪問該類變量時,等于直接從常量池中獲取,并沒有初始化該類。

初始化的步驟

1、如果該類還沒有加載和連接,則程序先加載該類并連接。

2、如果該類的直接父類沒有加載,則先初始化其直接父類。

3、如果類中有初始化語句,則系統依次執行這些初始化語句。

在第二個步驟中,如果直接父類又有直接父類,則系統會再次重復這三個步驟來初始化這個父類,依次類推,JVM最先初始化的總是java.lang.Object類。當程序主動使用任何一個類時,系統會保證該類以及所有的父類都會被初始化。

以上所述是小編給大家介紹的JAVA類加載機制(推薦),希望對大家有所幫助!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲欧美综合v| 久久99久久99精品中文字幕| 久久久久久有精品国产| 青草青草久热精品视频在线网站| 美女视频久久黄| 久久国产精品亚洲| 国产精品夜色7777狼人| 欧美特黄级在线| 日韩一区二区av| 在线观看国产欧美| 久久成年人免费电影| 欧美最顶级的aⅴ艳星| 亚洲国产女人aaa毛片在线| 色噜噜狠狠狠综合曰曰曰88av| 国产欧美va欧美va香蕉在| 国产精品久久77777| 岛国av在线不卡| 国产成人精品一区二区在线| 欧美激情亚洲一区| 欧洲亚洲女同hd| 国产精品露脸av在线| 2019中文字幕全在线观看| 成人羞羞国产免费| 欧美日韩国产综合新一区| 国产一区二区色| 色偷偷91综合久久噜噜| 欧美性xxxx极品hd满灌| 亚洲精选一区二区| 久久综合电影一区| 日韩在线观看免费网站| 国产一区视频在线播放| 亚洲国模精品一区| 久久亚洲电影天堂| 欧美激情高清视频| 国产91在线视频| 亚洲欧美在线免费观看| 成人两性免费视频| 麻豆国产精品va在线观看不卡| 69**夜色精品国产69乱| 欧美中文在线观看国产| 日韩电影在线观看永久视频免费网站| 欧美日韩在线视频观看| 正在播放亚洲1区| 91沈先生作品| 欧美激情亚洲视频| 91精品综合久久久久久五月天| 国产精品99蜜臀久久不卡二区| 91人成网站www| 国产91精品视频在线观看| 久久99久久99精品免观看粉嫩| 久久精品国产2020观看福利| 一本色道久久综合狠狠躁篇怎么玩| 久久99国产精品自在自在app| 亚洲精品mp4| 亚洲аv电影天堂网| 亚洲国产美女精品久久久久∴| 粗暴蹂躏中文一区二区三区| 国产成人精品一区二区在线| 在线观看欧美日韩国产| 欧美日韩在线视频一区二区| 欧美性生交大片免网| 国产拍精品一二三| 欧美国产日韩xxxxx| 国产专区欧美专区| 亚洲一区二区久久久久久| 欧美最猛性xxxxx(亚洲精品)| 精品香蕉一区二区三区| 欧美国产视频日韩| 国内免费久久久久久久久久久| 亚洲va欧美va在线观看| 亚洲欧美另类国产| 国产一区红桃视频| 中文字幕在线观看日韩| 国产亚洲一区二区精品| 永久免费看mv网站入口亚洲| 九九久久国产精品| 国产精品一区二区久久国产| 精品久久久久久久久久久久久久| 国产精品99蜜臀久久不卡二区| 国产精品女主播| 欧美黑人性猛交| 日韩动漫免费观看电视剧高清| 亚洲成**性毛茸茸| 热久久免费视频精品| 欧美国产日本在线| 国产欧美亚洲精品| 性欧美xxxx视频在线观看| 成人国产精品久久久| 国产成人精品电影久久久| 欧美日韩国内自拍| 久久国产精品久久精品| 97香蕉超级碰碰久久免费软件| 亚洲视频在线视频| 亲子乱一区二区三区电影| 亚洲人成电影网站色…| 成人性生交大片免费看视频直播| 国产精品成人一区| 国产视频精品xxxx| 亚洲国产91精品在线观看| 中文字幕亚洲无线码在线一区| 九九精品在线观看| 深夜成人在线观看| 久久国产精品久久精品| 91免费电影网站| 亚洲欧洲国产精品| 国产精品观看在线亚洲人成网| 中文字幕欧美精品日韩中文字幕| 欧美体内谢she精2性欧美| 亚洲天堂av图片| 欧美精品电影在线| 日韩在线视频观看正片免费网站| 国产精品综合网站| 成人av.网址在线网站| 欧美最猛黑人xxxx黑人猛叫黄| 亚洲视频在线观看视频| 欧美日韩视频免费播放| 国产区亚洲区欧美区| 91香蕉嫩草影院入口| 日韩中文字幕在线看| 亚洲国产一区二区三区在线观看| 国产精品亚洲第一区| 日韩av不卡电影| 国产午夜精品美女视频明星a级| 亚洲色图av在线| 深夜福利国产精品| 久久免费视频网| 亚洲女人天堂成人av在线| 久久香蕉国产线看观看网| 欧美性受xxxx黑人猛交| 欧美日韩精品在线观看| 国产69精品久久久久99| 国产精品夫妻激情| 色综合久久88色综合天天看泰| 97在线视频免费观看| 亚洲欧美精品伊人久久| 亚洲人成电影网站色www| 亚洲理论电影网| 国产99久久精品一区二区 夜夜躁日日躁| 欧美国产日韩xxxxx| 欧美精品九九久久| 亚洲第一视频网| 国产精品成人av在线| yw.139尤物在线精品视频| 亚洲综合大片69999| 亚洲第一色在线| 国产精品91久久| 国产一区二区三区中文| 国产精品免费看久久久香蕉| 久久亚洲精品国产亚洲老地址| 久久久噜久噜久久综合| 国产一区二区动漫| 日本成熟性欧美| 久久久久久网站| 亚洲免费av片| 亚洲精品久久久久久久久久久久久| 黄色91在线观看| 成人黄色av网| 日韩欧美亚洲综合| 亚洲美女自拍视频| 久久99国产精品久久久久久久久| 4438全国亚洲精品在线观看视频| 亚洲国产日韩欧美在线动漫| 欧美精品在线免费| 国产福利精品在线|