JVM-JAVA-雙親委派機制

雙親委派機制

  • 雙親委派機制
  • Tomcat打破雙親委派機制

雙親委派機制

在這里插入圖片描述
雙親委派機制,加載某個類時會先委托父加載器尋找目標類,找不到再委托上層父加載器加載,如果所有父加載器在自己的加載類路徑下都找不到目標類,則在自己的類加載路徑中查找并載入目標類。
比如我們的Test類,最先會找應用程序類加載器加載,應用程序類加載器會先委托擴展類加載器加載,擴展類加載器再委托引導類加載器,頂層引導類加載器在自己的類加載路徑里找沒找到Test類,則向下加載Test類的請求,擴展類加載器 接到指令自己加載,在自己的類加載路徑里也沒找到Test類,又向下退回Test類的加載請求給應用程序類加載器,應用程序類加載器于是在自己的類加載路徑里找Test類,進行加載

注:雙親委派機制說簡單點就是,先找父親加載,不行再由兒子自己加載

應用程序類加載器AppClassLoader加載類的雙親委派機制源碼,AppClassLoader的loadClass方法最終會調用其父類ClassLoader的loadClass方法,該方法的大體邏輯如下:
首先,檢查一下指定名稱的類是否已經加載過,如果加載過了,就不需要再加載,直接返回。
如果此類沒有加載過,那么,再判斷一下是否有父加載器;如果有父加載器,則由父加載器加載(即調用parent.loadClass(name, false);).或者是調用bootstrapLoader類加載器來加載。
如果父加載器及bootstrapLoader類加載器都沒有找到指定的類,那么調用當前類加載器的findClass方法來完成類加載。

自定義類加載器示例:
自定義類加載器只需要繼承 java.lang.ClassLoader 類,該類有兩個核心方法,一個是loadClass(String, boolean),實現了雙親委派機制,還有一個方法是findClass,默認實現是空方法,所以我們自定義類加載器主要是重寫findClass方法。

Tomcat打破雙親委派機制

  1. 一個web容器可能需要部署多個應用程序,不同的應用程序可能會依賴同一個第三方類庫的不同版本,不能要求同一個類庫在同一個服務器只有一份,因此要保證每個應用程序的類庫都是獨立的,保證相互隔離。
  2. 部署在同一個web容器中相同的類庫相同的版本可以共享。否則,如果服務器有很多個應用程序,那么要有很多份相同的類庫加載進虛擬機。
  3. web容器也有自己依賴的類庫,不能與應用程序的類庫混淆。基于安全考慮,應該讓容器的類庫和程序的類庫隔離開來。

在這里插入圖片描述
WebappClassLoader:各個Webapp私有的類加載器,加載路徑中的class只對當前Webapp可見,比如加載war包里相關的類,每個war包應用都有自己的WebappClassLoader,實現相互隔離,比如不同war包應用引入了不同的spring版本,這樣實現就能加載各自的spring版本;

注意:同一個JVM內,兩個相同包名和類名的類對象可以共存,因為他們的類加載器可以不一樣,所以看兩個類對象是否是同一個,除了看類的包名和類名是否都相同之外,還需要他們的類加載器也是同一個才能認為他們是同一個。

后續有詳細的再補-----------

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/22146.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/22146.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/22146.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

網絡攻擊的常見形式

開篇 本篇文章來自于《網絡安全 ——技術與實踐》的學習整理筆記。 正篇 口令竊取 相比于利用系統缺陷破壞網絡系統,最容易的方法還是通過竊取用戶的口令進入系統。因為人們傾向于選擇很糟糕的口令作為登錄密碼,所以口令猜測很容易成功。通常&#xff0…

C語言:基礎知識

創作不易,友友們給個三連吧 一、C語?的基本概念與發展歷史 1.1 人和計算機進行交流的語言 通常,我們使用英語、中文等語言來進行兩個人之間的交流。這意味著當我們想要和他人進行交流時,我們需要一種語言來表達自己的感受。同樣的&#xf…

10分鐘了解ERP軟件系統

ERP(Enterprise Resource Planning,企業資源規劃)軟件是一種集成的管理信息系統,旨在通過優化公司內部資源的分配和使用,提高企業的運營效率和管理水平。ERP系統通常包含多個功能模塊,這些模塊覆蓋了企業運…

喜訊!易知微入選2024年第一批浙江省專精特新中小企業

近日,杭州市經濟和信息化局對2024年第一批浙江省專精特新中小企業名單進行公示。 圖片 經過專業化程度、技術創新與研發能力、品牌影響力、經營管理水平等多方面因素的考量篩選,杭州易知微科技有限公司榮幸地入選了2024年第一批浙江省專精特新中小企業…

c語言:自定義類型(枚舉、聯合體)

前言: c語言中中自定義類型不僅有結構體,還有枚舉、聯合體等類型,上一期我們詳細講解了結構體的初始化,使用,傳參和內存對齊等知識,這一期我們來介紹c語言中的其他自定義類型枚舉和聯合體的知識。 1.位段 …

java -jar命令常見使用方法

1、基本用法: java -jar filename.jar這是最簡單的用法,直接指定要運行的 JAR 文件的名稱(包括 .jar 擴展名)。Java 虛擬機(JVM)將加載并執行 JAR 文件中的主類(在 JAR 文件的 META-INF/MANIFE…

微服務:Rabbitmq利用jackson序列化消息為Json發送并接收

消息序列化 Spring默認會把你發送的消息通過JDK序列化為字節發送給MQ&#xff0c;接收消息的時候&#xff0c;再把字節反序列化為Java對象。 我們可以配置JSON方式來序列化&#xff0c;這樣體積更小&#xff0c;可讀性更高。 引入依賴&#xff1a; <dependency><g…

燈珠對LED顯示屏性能的影響

LED顯示屏作為現代顯示技術的重要組成部分&#xff0c;廣泛應用于廣告、信息發布、交通指示等領域。燈珠作為LED顯示屏的核心組件&#xff0c;對其性能有著決定性的影響。本文將從八個關鍵方面探討燈珠對LED顯示屏性能的影響。 1. 視角 LED顯示屏的視角由燈珠的視角決定。戶外顯…

原型鏈、閉包、手寫一個閉包函數、 閉包有哪些優缺點、原型鏈繼承

什么是原型鏈&#xff1f; 原型鏈是一種查找規則 為對象成員查找機制提供一個方向 因為構造函數的 prototype 和其實例的 __ proto __ 都是指向原型對象的 所以可以通過__proto__ 查找當前的原型對象有沒有該屬性, 沒有就找原型的原型, 依次類推一直找到Object( null ) 為…

【YOLOv9改進[Conv]】使用YOLOv10的空間通道解耦下采樣SCDown模塊替換部分CONv的實踐 + 含全部代碼和詳細修改內容

本文將使用YOLOv10的空間通道解耦下采樣SCDown模塊替換部分CONv的實踐 ,文中含全部代碼和詳細修改內容。 目錄 一 YOLOv10 1 空間通道解耦下采樣 2 可視化

UFS協議—新手快速入門(二)【5-6】

目錄 五、UFS協議棧 六、UFS技術演進與詳解 1、UFS應用層 設備管理器 任務管理器 2、UFS傳輸層 3、UFS互聯層 UFS協議—新手快速入門&#xff08;一&#xff09;【1-4】 五、UFS協議棧 UFS&#xff08;Universal Flash Storage&#xff09;協議是針對固態存儲設備&…

渡眾機器人自動駕駛小車運行Autoware 實現港口物流運輸

Autoware 是一個開源的自動駕駛軟件堆棧&#xff0c;提供了豐富的功能和模塊&#xff0c;用于實現自動駕駛車輛的感知、定位、規劃和控制等功能。北京渡眾機器人公司將多款自動駕駛小車在多場景運行Autoware &#xff0c;它可以實現以下功能&#xff1a; 1. 感知&#xff1a;利…

Spark的性能調優——RDD

前言 RDD 是 Spark 對于分布式數據集的抽象&#xff0c;每一個 RDD 都代表著一種分布式數據形態。比如 lineRDD&#xff0c;它表示數據在集群中以行&#xff08;Line&#xff09;的形式存在&#xff1b;而 wordRDD 則意味著數據的形態是單詞&#xff0c;分布在計算集群中。 參…

職稱繼續教育--專業課2

單選題&#xff08;共10題&#xff0c;每題3分&#xff09; 1、根據本講&#xff0c;“水十條”總體框架包括&#xff08;&#xff09;個層次。 C、5 2、根據“水十條”目標指標層&#xff0c;到2020年&#xff0c;地級及以上城市建成區的黑臭水體控制&#xff08;&#xff09…

數據挖掘綜合案例-家用熱水器用戶行為分析與事件識別

文章目錄 1. 背景與挖掘目標2. 分析方法與過程3. 數據分析3.1 數據探索分析3. 2 數據預處理1. 屬性約束2. 劃分用水事件3. 確定單次用水事件時長閾值4. 屬性構造5.篩選候選洗浴事件 3.3 模型構建3.4 模型檢驗 4. 思考總結 1. 背景與挖掘目標 隨著國內大家電品牌的進入和國外品…

了解CAN功能

了解CAN功能&#xff0c;學習CAN功能&#xff0c;理解CAN和串口的區別&#xff0c;以及它和RS485的相似之處。 1、“多主機”特性 在CAN網絡通訊中&#xff0c;無需其它設備同意&#xff0c;每個CAN設備都可以主動向外發送數據&#xff0c;且所有設備都會收到數據&#xff0c…

【面試干貨】 非關系型數據庫(NoSQL)與 關系型數據庫(RDBMS)的比較

【面試干貨】 非關系型數據庫&#xff08;NoSQL&#xff09;與 關系型數據庫&#xff08;RDBMS&#xff09;的比較 一、引言二、非關系型數據庫&#xff08;NoSQL&#xff09;2.1 優勢 三、關系型數據庫&#xff08;RDBMS&#xff09;3.1 優勢 四、結論 &#x1f496;The Begin…

孵化器補貼政策提問模板

對于一些需要創業的人來說&#xff0c;找場地是非常非常難的&#xff0c;一個好的場地能夠提高創業的成功率&#xff0c;下面這些內容對于孵化器產業園的政策有一個好的提問&#xff0c;可以幫助你們了解這個孵化器合不合適。需要創業的人可以收藏 某孵化器政策示例 提問模板 …

源代碼先轉字節碼,再轉機器碼的過程

編程語言分類 1. 機器語言 直接使用 (101010) 二進制指令去編寫程序, 等于 直接操作硬件優點 : 最底層, 離計算機最近, 執行速度快缺點 : 復雜難記, 開發效率最低, 2. 匯編語言 用英文標簽代替一組二進制指令, 本質上仍然是 直接操作硬件優點 : 比較底層, 執行速度最快缺點 …

【競技寶】歐洲杯:德國被烏克蘭逼平,27腳射門仍難得分!

歐洲杯前的熱身賽已經全面開啟,東道主德國隊算是打響了熱身賽的第一槍,只可惜他們在主場0比0被烏克蘭逼平。整場比賽,德國隊都占據明顯優勢,全場比賽轟出27腳射門,可是卻無法實現破門。這個時候德國球迷似乎回想到了前兩屆世界大賽,球隊被“鋒無力”支配的恐懼。 本場比賽德國隊…