最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

【狂神說Java】JVM快速入門篇

2021-08-08 14:09 作者:晚晴若云  | 我要投稿


雙親委派機(jī)制

java是運(yùn)行在java虛擬機(jī)(JVM)中的,在java文件編譯成class字節(jié)碼文件后,由ClassLoader(類加載器)負(fù)責(zé)講這些class文件給加載到JVM中去運(yùn)行

JVM提供了三層的ClassLoader:

  • BootStrapClassLoader:主要是負(fù)責(zé)加載核心的類庫(如:java.lang.*等)構(gòu)造ExtClassLoader和AppClassLoader。(主要是rt.jar,charset.jar等包)
  • ExtClassLoader:主要負(fù)責(zé)加載jre/lib/ext目錄下的一些擴(kuò)展的jar。
  • AppClassLoader:主要負(fù)責(zé)加載應(yīng)用程序的主函數(shù)。

那如果有一個(gè)我們寫的Hello.java編譯成的Hello.class文件,它是如何被加載到JVM中的呢?

java.lang包下的loadClass方法:

public Class<?> loadClass(String name) throws ClassNotFoundException {
??return loadClass(name, false);
}
//??????-----??-----
protected Class<?> loadClass(String name, boolean resolve)
??throws ClassNotFoundException
{
????// 首先,檢查是否已經(jīng)被類加載器加載過
????Class<?> c = findLoadedClass(name);
????if (c == null) {
??????try {
????????// 存在父加載器,遞歸的交由父加載器
????????if (parent != null) {
??????????c = parent.loadClass(name, false);
???????} else {
??????????// 直到最上面的Bootstrap類加載器
??????????c = findBootstrapClassOrNull(name);
???????}
?????} catch (ClassNotFoundException e) {
????????// ClassNotFoundException thrown if class not found
????????// from the non-null parent class loader
?????}
 
??????if (c == null) {
????????// If still not found, then invoke findClass in order
????????// to find the class.
????????c = findClass(name);
?????}
???}
????return c;
}


如果沒有加載過,會一直向上提交,直到頂層的BootStrapClassLoader,再向下檢查是否能加載該類。如果一直到最底層都沒有任何加載器能加載此類,則拋出ClassNotFoundException。

類加載生命周期

  1. 加載-將.class文件從磁盤讀到內(nèi)存
  2. 連接
  3. 2.1 驗(yàn)證-驗(yàn)證字節(jié)碼的正確性。
  4. 2.2 準(zhǔn)備-給類的靜態(tài)變量分配內(nèi)存,并賦予默認(rèn)值
  5. 2.3 解析-類裝載器裝入類所引用的其他所有類。
  6. 初始化-為類的靜態(tài)變量賦予正確的初始值,上述的準(zhǔn)備階段為靜態(tài)變量賦予的是虛擬機(jī)默認(rèn)的初始值,此處賦予的才是程序編寫著為變量分配的真正的初始值,執(zhí)行靜態(tài)代碼塊
  7. 使用
  8. 卸載


【狂神說Java】JVM快速入門篇的評論 (共 條)

分享到微博請遵守國家法律
龙州县| 宜州市| 莱州市| 安岳县| 神木县| 宝应县| 临猗县| 扎赉特旗| 水城县| 昌乐县| 久治县| 渝北区| 浠水县| 汤原县| 大渡口区| 浦江县| 朝阳区| 喀什市| 清流县| 淮北市| 宜昌市| 望都县| 同德县| 尼玛县| 太白县| 即墨市| 郓城县| 乌兰县| 定远县| 灵武市| 桂平市| 改则县| 沙雅县| 商河县| 枞阳县| 安塞县| 亚东县| 大足县| 靖江市| 彰化市| 通河县|