日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java中类加载机制、类加载过程和类加载器层次

發(fā)布時間:2025/3/20 编程问答 13 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java中类加载机制、类加载过程和类加载器层次 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1.類加載機制

jvm把class文件加載到內(nèi)存,并對數(shù)據(jù)進行校驗、解析和初始化,最終形成jvm可以直接使用的java類型的過程。

(1)加載

將class文件字節(jié)碼內(nèi)容加載到內(nèi)存中,并將這些靜態(tài)數(shù)據(jù)轉(zhuǎn)換成方法區(qū)中的運行時數(shù)據(jù)結(jié)構(gòu),在堆中生成一個代表這個類的java.lang.Class對象,作為方法區(qū)類數(shù)據(jù)的訪問入口。

(2)鏈接 將java類的二進制代碼合并到jvm的運行狀態(tài)之中的過程

2.1 驗證確保加載的類信息符合jvm規(guī)范,沒有安全方面的問題。2.2 準備 正式為類變量(static變量)分配內(nèi)存并設置類變量初始值的階段,這些內(nèi)存都將在方法區(qū)中進行分配。2.3 解析虛擬機常量池內(nèi)的符號引用替換為直接引用的過程。(比如String s ="aaa",轉(zhuǎn)化為 s的地址指向“aaa”的地址)

(3)初始化

初始化階段是執(zhí)行類構(gòu)造器方法的過程。類構(gòu)造器方法是由編譯器自動收集類中的所有類變量的賦值動作和靜態(tài)語句塊(static塊)中的語句合并產(chǎn)生的。

當初始化一個類的時候,如果發(fā)現(xiàn)其父類還沒有進行過初始化,則需要先初始化其父類的初始化

虛擬機會保證一個類的構(gòu)造器方法在多線程環(huán)境中被正確加鎖和同步

當訪問一個java類的靜態(tài)域時,只有真正聲明這個靜態(tài)變量的類才會被初始化。

2.類加載過程

類加載過程分為:類的主動引用和類的被動引用

類的主動引用(一定會發(fā)生類的初始化)

--new一個類的對象--調(diào)用類的靜態(tài)成員(除了final常量)和靜態(tài)方法--使用java.lang.reflect包的方法對類進行反射調(diào)用--當初始化一個類,如果其父類沒有被初始化,則先初始化他的父類--當要執(zhí)行某個程序時,一定先啟動main方法所在的類

類的被動引用(不會發(fā)生類的初始化)

--當訪問一個靜態(tài)變量時,只有真正生命這個靜態(tài)變量的類才會被初始化(通過子類引用父類的靜態(tài)變量,不會導致子類初始化)--通過數(shù)組定義類應用,不會觸發(fā)此類的初始化 A[] a = new A[10];--引用常量(final類型)不會觸發(fā)此類的初始化(常量在編譯階段就存入調(diào)用類的常量池中了)

3.類加載器的層次結(jié)構(gòu)(樹狀結(jié)構(gòu))

引導類加載器(bootstrap class loader)c語言編寫

--他用類加載java 的核心庫(String 、Integer、List。。。)在jre/lib/rt.jar路徑下的內(nèi)容,是用C代碼來實現(xiàn)的,并不繼承自java.lang.ClassLoader。--加載擴展類和應用程序類加載器。并指定他們的父類加載器。

擴展類加載器(extensions class loader)

--用來加載java的擴展庫(jre/ext/*.jar路徑下的內(nèi)容)java虛擬機的實現(xiàn)會自動提供一個擴展目錄。該類加載器在此目錄里面查找并加載java類。應用程序類加載器(application class loader)--他根據(jù)java應用的類路徑(classpath路徑),一般來說,java應用的類都是由他來完成加載的

自定義類加載器

--開發(fā)人員可以通過繼承java.lang.ClassLoader類的方式實現(xiàn)自己的類加載器,以滿足一些特殊的需求。

擴展類加載器、應用程序類加載器、自定義類加載器均是由java實現(xiàn),都繼承java.lang.ClassLoader類。

類加載器的代理模式:雙親委托機制

--就是某個特定的類加載器在接收到加載類的請求后,首先將加載任務委托給父類加載器,一次追溯,直到最高的爺爺輩的,如果父類加載器可以完成類加載任務,就成功返回;只要父類加載器無法完成次加載任務時,才自己加載。--雙親機制是為了保證java核心庫的類型安全,不會出現(xiàn)用戶自己能定義java.lang.Object類的情況。

雙親委托機制是代理模式的一種,并不是所有的類加載器都采用雙親委托機制,tomcat服務器類加載器也使用代理模式,所不同的是他是首先嘗試自己去加載某個類,如果找不到在代理給父類加載器。

轉(zhuǎn)載地址:http://www.cnblogs.com/pengfeiliu/p/4420793.html

《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的java中类加载机制、类加载过程和类加载器层次的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: www.精品 | 久久午夜国产精品 | 亚洲欧美日韩在线 | 91免费影片| 麻豆changesxxx国产 | 国产suv精品一区二区 | 黄色片网站免费在线观看 | 夜夜爽夜夜叫夜夜高潮漏水 | hitomi一区二区三区精品 | 日韩欧美四区 | 亚洲手机视频 | 久久免费片 | 国产精品丝袜视频无码一区69 | 久草老司机 | 91精品综合久久久久久五月天 | 欧美三级a做爰在线观看 | 国产成人无码一区二区三区在线 | 黄色片日韩 | 成人av观看 | 久久久精品日韩 | 精品亚洲成人 | 成人av高清在线观看 | 天堂中文在线资 | 亚洲五月婷 | 国产日韩在线播放 | 毛片无码免费无码播放 | 日日干日日摸 | 中文字幕欧美日韩 | 亚洲日本国产 | 私密spa按摩按到高潮 | 午夜日韩福利 | 久久综合九色综合欧美狠狠 | 在线播放你懂的 | 一级片视频免费看 | 国产最新自拍视频 | 日韩欧美中文字幕在线视频 | avav亚洲| 日韩在线视频不卡 | 久久视频在线观看免费 | 国产精品午夜一区二区 | 红桃视频黄色 | 天堂资源地址在线 | 韩国一级淫一片免费放 | 欲色av| 久草免费在线播放 | 精品xxx| av一二三区 | 操综合网| 在线看免费 | 另类图片亚洲色图 | 国产a视频免费观看 | www.haoav| 国产日韩激情 | 日本免费毛片 | 日韩a∨ | 国产一级一级片 | 成人在线精品 | 超碰视屏 | 官场艳妇疯狂性关系 | 国产精品久久久久久婷婷天堂 | 特黄一区 | 国产亚洲自拍av | 六月婷婷激情网 | 日韩成人在线网站 | 日日干夜夜撸 | 成人精品久久久午夜福利 | 亚洲色图1 | 男女做激情爱呻吟口述全过程 | 婷婷久久久久 | 欧美乱码精品一区二区 | 欧洲女同同性吃奶 | 成年人在线观看视频 | 99热2| 成人拍拍 | 国产+日韩+欧美 | 性视频一区 | 日日噜噜噜夜夜爽爽狠狠 | 色婷婷av一区二区三区之红樱桃 | 日韩欧美午夜 | 欧美人与zoxxxx另类 | 操女人免费视频 | 痴汉电车在线播放 | 国产精品久久久久久久久久东京 | 午夜激情网址 | 欧美成人aaaaa | 国产三级在线播放 | 精品人妻一区二区三区四区 | 理论片在线观看理伦片 | 97在线精品| mm131美女视频 | 日韩精品一区二区电影 | 97超碰人人网 | 亚洲乱子伦 | 日本成人激情 | 国产午夜在线视频 | 黄色天堂网站 | 欧美 唯美 清纯 偷拍 | 日韩福利电影在线 | 91伦理|