一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

Java類加載的過(guò)程概述

 好程序員IT 2020-10-12

  好程序員Java培訓(xùn)分享Java類加載的過(guò)程概述:一. 類的加載概述

  當(dāng)程序要使用某個(gè)類時(shí),如果該類還未被加載到內(nèi)存中,則系統(tǒng)會(huì)通過(guò)加載、連接、初始化三步來(lái)實(shí)現(xiàn)對(duì)這個(gè)類進(jìn)行初始化。

  1. 加載:是將class文件讀入內(nèi)存,并為之創(chuàng)建一個(gè)Class對(duì)象。任何類被使用時(shí)系統(tǒng)都會(huì)建立一個(gè)Class對(duì)象。

  2. 連接:

  (1)驗(yàn)證是否有正確的內(nèi)部結(jié)構(gòu),并和其他類協(xié)調(diào)一致。

  (2)準(zhǔn)備負(fù)責(zé)為類的靜態(tài)成員分配內(nèi)存,并設(shè)置默認(rèn)初始化值。

  (3)解析將類的二進(jìn)制數(shù)據(jù)中的符號(hào)引用替換為直接。

  3. 初始化:就是我們以前講過(guò)的初始化步驟。

  二. 類加載時(shí)機(jī)

  當(dāng)Java程序首次通過(guò)下面6種方式使用某個(gè)類或接口時(shí),系統(tǒng)會(huì)初始化該類或接口。

  1. 創(chuàng)建類的實(shí)例。

  2. 訪問(wèn)類的靜態(tài)變量,或者為靜態(tài)變量賦值。

  3. 調(diào)用類的靜態(tài)方法。

  4. 初始化某個(gè)類的子類。

  5. 直接使用Java.exe命令來(lái)運(yùn)行某個(gè)主類。

  6. 使用反射方式來(lái)強(qiáng)制創(chuàng)建某個(gè)類或接口對(duì)應(yīng)的Java.lang.Class對(duì)象。

  三. 類加載器的概述和分類

  1. 類加載器負(fù)責(zé)將.class文件加載到內(nèi)存中,并為之生成對(duì)應(yīng)的Class項(xiàng),在Java中,類裝載器把一個(gè)類裝入JVM中,要經(jīng)過(guò)以下步驟:

  (1)裝載:查找和導(dǎo)入Class文件;

  (2)鏈接:把類的二進(jìn)制數(shù)據(jù)合并到JRE;

  校驗(yàn):檢查載入Class文件數(shù)據(jù)的正確性;

  準(zhǔn)備:給類的靜態(tài)變量分配存儲(chǔ)空間;

  解析:將符號(hào)引用轉(zhuǎn)成直接引用;

  (3)初始化:對(duì)類的靜態(tài)變量,靜態(tài)代碼塊執(zhí)行初始化操作

  (4)當(dāng)JVM啟動(dòng)時(shí),會(huì)形成由三個(gè)加載器組成的初始類加載器層次結(jié)構(gòu):

  Bootstrap ClassLoader 根類加載器

  Extension ClassLoader 擴(kuò)展類加載器

  System ClassLoader 系統(tǒng)類加載器

  2. 類加載器的作用

  Bootrap ClassLoader被稱為引導(dǎo)(也稱為原始或跟)類加載器,它負(fù)責(zé)加載Java的核心類。跟類加載器不是Java.lang.ClassLoader的子類,而是JVM自身實(shí)現(xiàn)的。在JDKJRElib目錄下rt.jar文件中。

  Extension ClassLoader負(fù)責(zé)加載JRE拓展目錄中的JAR包的類,它的父類加載器是跟類加載器。在JDKJRElib目錄下ext目錄。

  System ClassLoader負(fù)責(zé)在JVM啟動(dòng)時(shí)加載來(lái)自Java命令的-classpath選項(xiàng)、Java.class,path系統(tǒng)屬性,或CLASSPATH指定的jar包和類歷經(jīng)。系統(tǒng)可通過(guò)ClassLoader的靜態(tài)方法或區(qū)該系統(tǒng)類加載器。如果沒(méi)有特別指定,則用戶自定義的類加載器都已類加載器作為父加載器。

  四. 反射概述

JAVA反射機(jī)制是在運(yùn)行狀態(tài)中,對(duì)于任意一個(gè)類,都能夠知道這個(gè)類的所有屬性和方法,同時(shí)對(duì)于任意一個(gè)對(duì)象,都能夠調(diào)用它的任意一個(gè)方法和屬性,這種動(dòng)態(tài)獲取的信息以及動(dòng)態(tài)調(diào)用對(duì)象方法的功能稱為Java語(yǔ)言的反射機(jī)制。

1.要想解剖一個(gè)類,必須先要獲取到該類的字節(jié)碼文件對(duì)象,而解剖使用的就是Class類中的方法,所以先要獲取到每一個(gè)字節(jié)碼文件對(duì)應(yīng)的Class類型的對(duì)象。

2. 每個(gè)類被加載后,系統(tǒng)會(huì)為該類生成一個(gè)對(duì)應(yīng)的Class對(duì)象,通過(guò)該Class對(duì)象可以訪問(wèn)到JVM中的這個(gè)類。

  獲得Class對(duì)象通常有三種方式:

  (1)使用Class類的forName(String clazz)靜態(tài)方法。

  (2)調(diào)用某個(gè)類的class屬性來(lái)獲取該類的的Class對(duì)象。

  (3)調(diào)用某個(gè)對(duì)象的getClass()方法,該方法是Object類的一個(gè)方法。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    欧美小黄片在线一级观看| 黑人粗大一区二区三区| 伊人国产精选免费观看在线视频 | 日韩色婷婷综合在线观看| 国产av一区二区三区四区五区| 久久精品亚洲精品一区| 午夜福利在线观看免费| 日本精品最新字幕视频播放| 午夜小视频成人免费看| 少妇成人精品一区二区| 精品国自产拍天天青青草原| 国产欧美日本在线播放| 俄罗斯胖女人性生活视频| 国产一区二区三区丝袜不卡 | 中国一区二区三区人妻| 午夜亚洲少妇福利诱惑| 成人国产激情福利久久| 中文字幕中文字幕在线十八区| 精品人妻一区二区三区免费看| 免费高清欧美一区二区视频 | 中文字幕精品一区二区年下载| 精产国品一二三区麻豆| 韩国激情野战视频在线播放| 亚洲综合香蕉在线视频| 日本不卡在线视频你懂的 | 国产欧美日韩一级小黄片| 丰满少妇被猛烈撞击在线视频| 国产不卡在线免费观看视频| 亚洲精品日韩欧美精品| 欧美在线观看视频免费不卡| 午夜亚洲精品理论片在线观看| 五月婷婷综合激情啪啪| 国产国产精品精品在线| 午夜视频成人在线观看| 国产精品午夜一区二区三区| 国产亚洲欧美另类久久久| 久久热麻豆国产精品视频 | 青青久久亚洲婷婷中文网| 色偷偷亚洲女人天堂观看| 国产精品激情对白一区二区| 又大又紧又硬又湿又爽又猛|