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

歡迎光臨散文網(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快速入門篇的評論 (共 條)

分享到微博請遵守國家法律
安阳县| 特克斯县| 灵石县| 金昌市| 望都县| 钦州市| 广南县| 汝南县| 简阳市| 随州市| 车致| 邵武市| 雅安市| 宽城| 麻城市| 舒兰市| 米泉市| 达孜县| 南和县| 辰溪县| 丹东市| 华池县| 光泽县| 信阳市| 洛扎县| 兴安县| 开原市| 大冶市| 息烽县| 辽阳县| 长阳| 山东省| 高碑店市| 化隆| 长沙县| 永嘉县| 深泽县| 万载县| 平舆县| 桐庐县| 沾化县|