Java-JVM是什么JVM的類加載機制

一.JVM是什么

1.jvm是java虛擬機,是java程序運行的基礎環境

2.jvm運行的是java源代碼經過編譯后的class文件,這些class文件經過jvm負責解釋或即時編譯為對應平臺的機器碼并執行

3.class文件也可以通過其他【jvm languages】經過編譯后得到,例如scala、kotlin、groovy等

二.JVM的類加載機制

JVM的類加載機制分為:加載,鏈接,初始化三個階段

鏈接又分為驗證,準備,解析三個階段

1.加載

將二進制流讀入內存,生成一個class對象

加載機制-雙親委派機制

即加載器加載類時先把請求委托給自己的父類加載器執行,直到頂層的啟動類加載器.

父類加載器能夠完成加載則成功返回,不能則子類加載器才自己嘗試加載.

(圖源黑馬)

優點:

1. 避免類的重復加載
2. 避免Java的核心API被篡改

如何打破雙親委派機制:

1. 自定義類加載器時,重寫 `ClassLoader` 的 `loadClass` 方法,改變默認的 “先委派父加載器” 邏輯。比如,可強制讓自定義加載器優先加載特定路徑、特定前綴的類,而非嚴格遵循雙親委派的委派順序。
2. Java 標準庫中(如 JDBC、JAXP ),核心類由啟動類加載器加載,但實現類(如 MySQL JDBC 驅動)在應用類路徑。為讓核心類(父加載器加載)能加載應用類路徑的實現類,`ServiceLoader` 會**反向委派**:父加載器(如 `Bootstrap ClassLoader` )加載的類,委派給應用類加載器(`AppClassLoader` )加載其實現類,打破 “父加載器無法請求子加載器” 的雙親委派限制。
3. OSGi 是模塊化框架,每個模塊(Bundle)有獨立類加載器。加載類時,**按需委派**:可配置加載策略(如 “先自己加載,再委派父加載器”,或 “特定包委派給指定加載器” ),完全突破雙親委派的固定順序,實現類加載的 “細粒度控制”。

2.鏈接

2.1驗證

驗證加載進來的二進制流是否符合一定格式

2.2準備

為類或接口的靜態字段賦默認值

2.3解析

將常量池的符號引用轉換為直接引用

3.初始化

執行靜態代碼塊,為靜態變量賦值

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

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

相關文章

做亞馬遜廣告,有哪些提高效率的工具

"為什么每天花3小時調整廣告卻看不到效果?""如何避免高轉化關鍵詞被競爭對手搶走?""為什么手動調整預算總是慢市場半拍?""ACOS居高不下真的是關鍵詞選錯了嗎?""有沒有工具能真正實現…

研究學習3DGS的順序

6 個核心基礎模塊 序號模塊說明推薦學習順序1📷 三維計算機視覺基礎建立對3D場景、點云、體積的空間理解?第一個2🧮 CT成像原理與圖像表示理解CT圖像本質、斷層數據、密度單位?并行進行3🟡 NeRF與3D Gaussian Splatting原理掌握點云/高斯場…

期刊分類計算機領域會議

該圖片已上傳圖床,需要可自行下載: https://youke1.picui.cn/s1/2025/08/15/689f1e3553930.png 參考鏈接: 【干貨】最全學術期刊級別分類講解_嗶哩嗶哩_bilibili

【計算機視覺與深度學習實戰】01基于直方圖優化的圖像去霧技術

摘要 隨著計算機視覺技術的快速發展,圖像去霧已成為數字圖像處理領域的重要研究方向。霧霾、灰塵、水汽等環境因素會嚴重降低圖像的對比度和可見度,影響圖像的視覺效果和后續的計算機視覺任務。本文深入探討了基于直方圖優化的圖像去霧技術,包括全局直方圖均衡化、對比度限…

Vue3 + Axios 實現一個精美天氣組件(含實時與未來預報)

Vue3 Axios 實現一個精美天氣組件(含實時與未來預報) 一、前言 在很多管理系統、信息看板、門戶首頁中,天氣模塊是一個常見的小組件。 它不僅能展示當前的氣溫、天氣狀況,還能提供未來幾天的天氣趨勢,讓用戶對環境有…

Unity:GUI筆記(二)——工具欄和選擇網格、滾動列表和分組、窗口、自定義皮膚樣式、自動布局

寫在前面:寫本系列(自用)的目的是回顧已經學過的知識、記錄新學習的知識或是記錄心得理解,方便自己以后快速復習,減少遺忘。五、工具欄和選擇網格1、工具欄使用Unity提供的API:GUI.Toolbar()可以創建一個工具欄。有三個參數是必須…

Streamlit實現Qwen對話機器人

Web界面 一、Streamlit 是一個用于創建數據科學和機器學習應用的開源前端框架,能夠快速將 Python 腳本轉化為交互式 Web 應用。通過簡單的 Python API 就能構建出交互式的數據應用。 1、主要特點 簡單易用:純 Python 編寫代碼,API 簡潔直觀…

Linux-地址空間

目錄 1.介紹 2.理解 3.Linux早期的內核調度隊列 1.介紹 這是32位的程序空間地址圖&#xff1a; 為了更好地理解這段圖&#xff0c;我們來寫一段代碼編譯運行&#xff1a; #include <stdio.h> #include <string.h> #include <unistd.h> #include <std…

**標題:發散創新之力,探索隱私計算的未來**隱私計算,作為當下數字化時代的熱門話題,正受

標題&#xff1a;發散創新之力&#xff0c;探索隱私計算的未來 隱私計算&#xff0c;作為當下數字化時代的熱門話題&#xff0c;正受到越來越多開發者和從業者的關注。本文將帶您走進隱私計算的奇妙世界&#xff0c;探討其背后的技術原理、應用場景以及發展趨勢。 一、隱私計算…

線程P5 | 單例模式[線程安全版]~懶漢 + 餓漢

什么是單例模式&#xff1f;在我們正式講解單例模式之前&#xff0c;沒有了解過的小伙伴可能會有疑問...到底啥叫單例模式&#xff1f;&#xff1f;其實單例模式呢&#xff0c;是我們設計模式中的一種&#xff0c;所謂的設計模式&#xff0c;你可以把它理解為一個模板&#xff…

kubernetes中數據存儲etcd

etcd 在 Kubernetes 中的角色核心定位&#xff1a;Kubernetes 的 唯一持久化數據存儲&#xff08;一致性數據庫&#xff09;。職責&#xff1a; 保存整個集群的期望狀態&#xff08;desired state&#xff09;&#xff0c;包括節點信息、Pod 清單、Service 定義、ConfigMap、Se…

Linux crontab定時任務

參考資料 【図解】cronの仕組み定時任務 - crontab解決ubuntu下定時任務不執行問題crontab環境變量問題&#x1f4a5;Linux定時任務功能詳解&#xff1a;crontab與at命令應用指南 目錄一. 環境準備1.1 wsl開啟systemd1.2 開啟cron日志二. cron服務管理相關命令2.1 service 的方…

企業頻繁收到軟件律師函?如何徹底解決這一難題

1. 引言&#xff1a;律師函頻發&#xff0c;已成信息化管理的“隱形雷區”在工業制造、芯片、航空航天、船舶制造、醫療器械等高要求行業&#xff0c;軟件不僅是研發與生產的關鍵工具&#xff0c;更是企業數據與知識產權安全的“底座”。然而&#xff0c;不少企業卻在日常運營中…

在 macOS 上順利安裝 lapsolver

一、什么是 lapsolver&#xff1f; lapsolver 是一個用于求解線性分配問題&#xff08;Linear Assignment Problem, LAP&#xff09; 的 Python 庫。線性分配問題是運籌學中的經典問題&#xff0c;核心是在兩個集合&#xff08;如“工人”與“任務”&#xff09;之間找到一組最…

宋紅康 JVM 筆記 Day02|JVM的架構模型、生命周期、發展歷程

一、今日視頻區間 P13-P25 二、一句話總結 JVM的架構模型&#xff1b;JVM的生命周期&#xff1b;JVM發展歷程&#xff1b; 三、關鍵圖/命令 3.1 JVM的架構模型Java程序對.class字節碼文件進行反編譯操作&#xff1a;在idea中先運行需要反編譯的代碼&#xff0c;找到對應的字節碼…

Linux新手上路 | 在Ubuntu上Pluma文本編輯器的安裝與基本使用

Linux新手上路 | 在Ubuntu上Pluma文本編輯器的安裝與基本使用一、Pluma工具介紹1.1 Pluma 工具概述1.2 主要功能1.3 適用場景二、安裝Pluma2.1 安裝方法2.2 啟動Pluma工具三、漢化方法3.1 安裝漢化包3.2 設置系統語言3.3 重新打開Pluma四、基本使用方法4.1 編寫文本內容4.2 關鍵…

React 揭秘:從新手到高手的進階之路

目錄 React&#xff1a;前端開發新寵? React 初相識? 什么是 React? React 的核心特性? 1.組件化開發 2.虛擬 DOM 與 Diff 算法 單向數據流 搭建 React 開發環境 環境準備? 創建 React 項目 項目結構解析 React 基礎語法與核心概念 JSX 語法? 基本語法規則…

八股文小記 Servlet 過濾器-Spring MVC 攔截器-Spring AOP 攔截器區別

您對執行機制的洞察非常準確&#xff01;讓我們深入分析這三種組件的調用機制及其與 AOP 節點的關系&#xff1a; 一、執行機制的本質區別組件調用機制實現原理Servlet 過濾器遞歸調用通過 FilterChain.doFilter() 顯式遞歸調用下一個節點Spring MVC 攔截器遍歷調用由 HandlerE…

qml 實現數值鍵盤

import QtQuick 2.0import QtQuick.Layouts 1.12 import"../pad" // PasswordKeyboard.qml import QtQuick 2.12ColumnLayout {id: keyboardspacing: 8// 鍵盤標題Text {text: "安全輸入"font.pixelSize: 16color: "#666"Layout.alignment: Qt.A…

PID控制算法

文章目錄引言一、基本原理1.1.簡介1.2.開環與閉環1.3.PID 的公式1.3.1.比例項&#xff08;Proportional&#xff09;1.3.2.積分項&#xff08;Integral&#xff09;1.3.3.微分項&#xff08;Differential&#xff09;1.4.連續形式與離散形式的 PID 公式1.4.1.連續形式1.4.2.離散…