【jvm】類加載器的分類

目錄

        • 一、說明
        • 二、示例
          • 2.1 代碼
          • 2.2 截圖
        • 三、啟動類加載器
        • 四、擴展類加載器
        • 五、應用程序類加載器

一、說明

  • 1.jvm支持兩種類型的類加載器,分別是引導類加載器(bootstrap classloader)和自定義類加載器(user-defined classloader)
  • 2.自定義類加載器一般指的是程序中由開發人員自定義的一類類加載器,java虛擬機規范卻沒有這么定義,而是將所有派生于抽象類classloader的類加載器都劃分為自定義類加載器
  • 3.在程序中,最常見的類加載器有引導類加載器、擴展類加載器、系統類加載器和自定義類加載器,是包含關系,不是上下層關系,也不是父類的繼承關系
  • 4.引導類加載器是c語言編寫實現的,代碼無法獲取到

二、示例

2.1 代碼
package com.learning.classloader;public class ClassLoaderLearning {public static void main(String[] args) {// 獲取系統類加載器ClassLoader systemClassLoader = ClassLoader.getSystemClassLoader();System.out.println(systemClassLoader);// 獲取其上層: 擴展類加載器ClassLoader extClassLoader = systemClassLoader.getParent();System.out.println(extClassLoader);// 試圖獲取其上層: 獲取不到引導類加載器ClassLoader bootstrapClassLoader = extClassLoader.getParent();System.out.println(bootstrapClassLoader);// 對于用戶自定義類型: 默認使用系統類加載器進行加載ClassLoader classLoader = ClassLoaderLearning.class.getClassLoader();System.out.println(classLoader);// String類型: 使用引導到加載器進行加載的,java的核心類庫都是使用引導類加載器進行加載的ClassLoader stringClassLoader = String.class.getClassLoader();System.out.println(stringClassLoader);}
}
2.2 截圖

在這里插入圖片描述

三、啟動類加載器

  • 1.又叫引導類加載器、bootstrap classloader
  • 2.啟動類加載器使用c/c++語言實現的,嵌套在jvm內部
  • 3.它用來加載java的核心庫(java_home/jre/lib/rt.jar、resources.jar或sun.boot.class.path路徑下的內容),用于提供jvm自身需要的類
  • 4.并不繼承自java.lang.ClassLoader,沒有父加載器
  • 5.加載擴展類和應用程序類加載器,并指定為他們的父類加載器
  • 6.處于安全考慮,bootstrap啟動類加載器只加載包名為java、javax、sun等開頭的類

四、擴展類加載器

  • 1.extension classloader
  • 2.java語言編寫,由sun.misc.Launcher$ExtClassLoader實現
  • 3.派生于ClassLoader類
  • 4.父類加載器為啟動類加載器
  • 5.從java.ext.dirs系統屬性所指定的目錄中加載類庫,或從jdk的安全目錄的jre/lib/ext子目錄(擴展目錄)下加載類庫。如果用戶創建的jar放在此目錄下,也會自動由擴展類加載器加載

五、應用程序類加載器

  • 1.AppClassLoader
  • 2.java語言編寫,由sun.misc.Launcher$AppClassLoader實現
  • 3.派生于ClassLoader類
  • 4.父類加載器為擴展類加載器
  • 5.負責加載環境變量classpath或系統屬性java.class.path指定路徑下的類庫
  • 6.該類加載是程序中默認的類加載器,一般來說,java應用的類都是由它來完成加載
  • 7.通過ClassLoader$getSystemClassLoader()方法可以獲取到該類加載器

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

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

相關文章

【springboot啟動報錯】java: 錯誤: 無效的源發行版:17

報錯截圖 解決方案 第一步:編輯配置,改為想用的jdk版本 第二步:文件--->項目結構,改為對應的SDK 第三步:文件--->設置--->構建、執行、部署--->編譯器--->Java編譯器,修改目標字節碼版本 第…

fiddler抓包工具的用法以及抓取手機報文定位bug

前言: fiddler抓包工具是日常測試中常用的一種bug定位工具 一 抓取https報文步驟 使用方法: 1 首先打開fiddler工具將證書導出 點擊TOOLS------Options------Https-----Actions---選中第二個選項 2 把證書導出到桌面后 打開谷歌瀏覽器 設置---高級…

自定義 視頻/音頻 進度條

復制代碼根據自己需求改動就可以了 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><metaname"viewport"conten…

【BASH】回顧與知識點梳理(二十五)

【BASH】回顧與知識點梳理 二十五 二十五. 特殊shell、PAM 模塊、訊息傳遞和大量建置賬號25.1 特殊shell特殊的 shell, /sbin/nologin 25.2 PAM模塊25.3 Linux 主機上的用戶訊息傳遞查詢使用者&#xff1a; w, who, last, lastlog使用者對談&#xff1a; write, mesg, wall使用…

Vue3組件庫

Vue組件庫 ViteVue3TypescriptTSX 1、項目搭建 1.1、創建項目&#xff08;yarn&#xff09; D:\WebstromProject>yarn create vite yarn create v1.22.19 [1/4] Resolving packages... [2/4] Fetching packages... [3/4] Linking dependencies... [4/4] Building fresh pa…

UNIAPP中開發企業微信小程序

概述 需求為使用uni-app開發企業微信小程序。希望可以借助現成的uni-app框架&#xff0c;快速開發。遇到的問題是uni-app引入jweixin-1.2.0.js提示異常: Reason: TypeError: Cannot read properties of undefined (reading ‘title’)。本文中描述了如何解決該問題&#xff0c…

IntelliJIDEA安裝lombok插件

寫在前面&#xff1a; 當我們創建POJO類時&#xff0c;都會毫不猶豫的讓開發工具對域變量生成set&#xff0c;get方法&#xff0c;雖然不是我們自己手動添加&#xff0c;但每個類都要做重復的生成操作&#xff0c;而且當變量名或者是修飾符改變了&#xff0c;我們就要刪除set&…

大數據量模糊查詢優化(流去重,流分批,建樹操作)

大數據量模糊查詢優化&#xff08;流去重&#xff0c;流分批&#xff0c;建樹操作&#xff09; 前言一、java8 流是什么二、本次優化涉及操作1.流去重2.流分批3.hutool樹工具類建樹4.全部代碼 總結 前言 有時候會進行大數據量查詢后的建樹操作&#xff0c;如果直接使用sql語句…

K8S之存儲卷

K8S之存儲卷 一、emptyDir emptyDir&#xff1a;可實現Pod中的容器之間共享目錄數據&#xff0c;但emptyDir存儲卷沒有持久化數據的能力&#xff0c;存儲卷會隨著Pod生命周期結束而一起刪除二、hostPath hostPath&#xff1a;將Node節點上的目錄/文件掛載到Pod容器的指定目錄…

TypeScript 關于對【泛型】的定義使用解讀

目錄 概念導讀泛型函數多個泛型參數泛型約束泛型別名泛型接口泛型類總結&#xff1a; 概念導讀 泛型&#xff08;Generics&#xff09;是指在定義函數、接口或類的時候&#xff0c;不預先指定具體的類型&#xff0c;而在使用的時候再指定類型的一種特性。使用泛型 可以復用類型…

Oracle切割字符串的方法,SQL語句完成。

Oracle用正則的方式循環切割字符串 需求&#xff1a;有一個這樣子的 Str “‘CNJ-520-180500000001|CNJ-520-181200000001|CNJ-520-190300000001|CNJ-520-190100000001|CNJ-520-181200000002’” &#xff0c;然后我需要拿到每一個單號&#xff0c;每一個單號都要走一遍固定的…

“MongoDB基礎知識【超詳細】

"探索MongoDB的無邊之境&#xff1a;沉浸式數據庫之旅" 歡迎來到MongoDB的精彩世界&#xff01;在這個博客中&#xff0c;我們將帶您進入一個充滿創新和無限潛力的數據庫領域。無論您是開發者、數據工程師還是技術愛好者&#xff0c;MongoDB都將為您帶來一場令人心動…

如何實現安全上網

l 場景描述 政府、軍工、科研等涉密單位或企業往往要比其他組織更早接觸高精尖的技術與產品&#xff0c;相對應的數據保密性要求更高。常規的內外網物理隔離手段&#xff0c;已經滿足不了這些涉密單位的保密需求&#xff0c;發展到現在&#xff0c;需求已經演變成既要保證網絡…

記一次Kafka重復消費解決過程

起因&#xff1a;車聯網項目開發&#xff0c;車輛發生故障需要給三個系統推送消息&#xff0c;故障上報較為頻繁&#xff0c;所以為了不阻塞主流程&#xff0c;采用了使用kafka。消費方負責推送并保存推送記錄&#xff0c;但在一次壓測中發現&#xff0c;實際只發生了10次故障&…

“深入探究JVM內部機制:理解Java虛擬機的工作原理“

標題&#xff1a;深入探究JVM內部機制&#xff1a;理解Java虛擬機的工作原理 摘要&#xff1a;本文將深入探究Java虛擬機&#xff08;JVM&#xff09;的內部機制&#xff0c;幫助讀者理解JVM的工作原理。我們將介紹JVM的組成部分、類加載過程、內存管理和垃圾回收機制&#xf…

帶你了解ChatGPT

目錄 什么是ChatGPT 從ChatGPT角度看聊天機器人的歷史 聊天機器人的早期歷史 ChatGPT的出現 ChatGPT和其他聊天機器人的比較 總結 ChatGPT相比其他聊天機器人的優勢在哪里 1. 自然語言處理能力更強 2. 編程能力高&#xff0c;應用領域廣泛 3. 可以滿足個性化需求 4.…

Golang實現完整聊天室(內附源碼)

項目github地址&#xff1a; 由于我們項目的需要&#xff0c;我就研究了一下關于websocket的相關內容&#xff0c;去實現一個聊天室的功能。 經過幾天的探索&#xff0c;現在使用Gin框架實現了一個完整的聊天室消息實時通知系統。有什么不完善的地方還請大佬指正。 用到的技術…

使用自己的數據利用pytorch搭建全連接神經網絡進行回歸預測

使用自己的數據利用pytorch搭建全連接神經網絡進行回歸預測 1、導入庫2、數據準備3、數據拆分4、數據標準化5、數據轉換6、模型搭建7、模型訓練8、模型預測9、完整代碼 1、導入庫 引入必要的庫&#xff0c;包括PyTorch、Pandas等。 import numpy as np import pandas as pd f…

tp6 RabbitMQ

1、composer 安裝 AMQP 擴展 composer require php-amqplib/php-amqplib 2、RabbitMQ 配置 在 config 目錄下創建 rabbitmq.php 文件 <?php return [host>,port>5672,user>,password>,vhost>,exchange_name > ,queue_name > ,route_key > ,cons…

中國生產了5.07億臺,庫存高達近4億臺?國產手機徹底賣不動了?

統計數據顯示今年上半年中國的手機產量達到5.07億臺&#xff0c;國內市場手機出貨量僅有1.24億臺&#xff0c;都出現了下滑&#xff0c;那么中國手機的產量比銷量多出了3.83億臺&#xff0c;這些手機都成為了庫存&#xff1f; 中國手機市場確實不如早年那么輝煌&#xff0c;201…