5. JVM 的方法區

1. JVM介紹和運行流程-CSDN博客

2. 什么是程序計數器-CSDN博客

3. java 堆和 JVM 內存結構-CSDN博客

4. 虛擬機棧-CSDN博客

5. JVM 的方法區-CSDN博客

6. JVM直接內存-CSDN博客

7. JVM類加載器與雙親委派模型-CSDN博客

8. JVM類裝載的執行過程-CSDN博客

9. JVM垃圾回收-CSDN博客

10. 垃圾回收的算法-CSDN博客

11. JVM中的分代回收-CSDN博客

12. JVM的垃圾回收器-CSDN博客

13. G1垃圾回收器-CSDN博客

14. 垃圾回收的引用區別-CSDN博客

15. JVM調優的參數設置-CSDN博客

16. JVM調優工具-CSDN博客


1.?什么是方法區

方法區是Java虛擬機(JVM)內存結構中的一個重要組成部分,主要用于存儲已被虛擬機加載的類信息、常量、靜態變量、即時編譯器編譯后的代碼等數據。

主要特點

  1. 共享內存區域:所有線程共享方法區

  2. 邏輯部分:是Java堆的邏輯組成部分

  3. 規范描述:在JVM規范中屬于堆的一個邏輯部分,但習慣上被稱為"非堆"(Non-Heap)

?發展與演進

  • 永久代(PermGen):在JDK7及之前,虛擬機用永久代來實現方法區。

  • 元空間(Metaspace)(方法區):從JDK8開始,永久代被移除,改用本地內存實現的元空間(方法區)。

存儲內容?

方法區主要存儲:

  • 類信息(Class元數據)

  • 運行時常量池

  • 靜態變量

  • 即時編譯器編譯后的代碼(JIT編譯的本地代碼)

  • 方法代碼


2.? 元空間的常量池

常量池(Constant Pool)是 Java 類文件(.class 文件)和 JVM 運行時內存中的一個重要數據結構,用于存儲類、方法、字段等相關的符號引用和字面量。

它分為兩種:

  1. Class 文件常量池(靜態常量池,編譯期生成)

  2. 運行時常量池(Runtime Constant Pool,JVM 運行時使用)

常量池 可以看作是一張表,虛擬機指令根據這張常量表找到要執行的類名、方法名、參數類型、字面量等信息?。?

可以使用下面的指令查看字節碼結構(類的基本信息、常量池、方法定義):

javap -vApplication.class

例如下圖:?


Class 文件常量池(靜態常量池)

在?.class?文件中,常量池存儲了類、方法、字段等的符號引用字面量,主要包括:

  • 字面量(Literals)

    • 字符串(如?"Hello"

    • 整數、浮點數(如?100,?3.14

    • 布爾值(true/false

    • null

  • 符號引用(Symbolic References)

    • 類和接口的全限定名(如?java/lang/Object

    • 字段的名稱和描述符(如?name:Ljava/lang/String;

    • 方法的名稱和描述符(如?main:([Ljava/lang/String;)V

特點

  • 編譯期生成,存儲在?.class?文件中

  • 不占用 JVM 內存,僅用于類加載時的解析


運行時常量池(Runtime Constant Pool)

當 JVM?加載類時,會將 Class 文件常量池的內容解析并存儲到?方法區(元空間)?中的運行時常量池。它包含:

  • 解析后的直接引用(如方法、字段的內存地址)

  • 動態生成的常量(如?String.intern()?的字符串)

  • JVM 運行時的符號引用解析結果

特點

  • 存儲在?方法區(JDK 8 后是元空間)

  • 可以動態添加(如?String.intern()

  • 如果內存不足,會拋出?OutOfMemoryError


3. 總結?

3.1 什么是方法區?

  • 方法區(Method Area)是各個線程共享的內存區域
  • 主要存儲類的信息、運行時常量池
  • 虛擬機啟動的時候創建,關閉虛擬機時釋放
  • 如果方法區域中的內存無法滿足分配請求,則會拋出OutOfMemoryError:Metaspace

3.2 介紹一下運行時常量池

  • 常量池:可以看作是一張表,虛擬機指令根據這張常量表找到要執行的類名方法名、參數類型、字面量等信息
  • 當類被加載,它的常量池信息就會放入運行時常量池,并把里面的符號地址變為真實地址

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

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

相關文章

網絡安全的基本練習

一.docker搭建 1.安裝dockerapt-get install docker.io docker-compose2.編寫配置文件(注意路徑正確)vim /etc/systemd/system/docker.service.d/http-proxy.conf[Service] Environment"HTTP_PROXYhttp://科學上網訪問的ip:端口" Environment&…

380. O(1) 時間插入、刪除和獲取隨機元素

實現RandomizedSet 類: RandomizedSet() 初始化 RandomizedSet 對象 bool insert(int val) 當元素 val 不存在時,向集合中插入該項,并返回 true ;否則,返回 false 。 bool remove(int val) 當元素 val 存在時&#xff…

【LeetCode Hot100 | 每日刷題】字母異位詞分組

題目鏈接:49. 字母異位詞分組 - 力扣(LeetCode) 題目: 給你一個字符串數組,請你將 字母異位詞 組合在一起。可以按任意順序返回結果列表。 示例 1: 輸入: strs ["eat", "tea", "tan"…

docker 安裝windows

目錄 下載地址: 使用教程: docker compose 查看版本 測試啟動 hello-world 報錯1 The system cannot find the file specified: 檢查 Docker Desktop 是否運行中 報錯2HF_ENDPOINT 1. 臨時解決方案(當前終端會話有效&…

docker compose 和build

目錄 docker compose 和build 的區別是什么? 核心差別: 1. docker build --platform linux/amd64 -f Dockerfile -t infiniflow/ragflow:nightly_lbg . 2. docker compose -f docker-compose-gpu.yml up -d 二者如何配合? 總結 docker …

裂變時刻:全球關稅重構下的券商交易系統躍遷路線圖(2025-2027)

——基于RWA清算、量子加密與實時非線性風控的下一代跨境基礎設施核心事件錨定:特朗普于7月7日對14國啟動分級關稅制裁(日韓25%、東南亞30%-40%、金磚關聯國10%附加稅),引發日元兌美元暴跌至144.47、銅價單日跳漲3.2%、散戶單日交…

python爬蟲初入門——基本庫和寫入方法

1.準備環境 python環境:3.10 2.常用庫 1.請求庫:實現 HTTP 請求操作 requests:基于 urllib 編寫的,阻塞式 HTTP 請求庫,發出一個請求,一直等待服務器響應后,程序才能進行下一步處理。seleni…

Sonar掃描C#代碼配置

需要的工具 MSBuild、sonar-scanner-4.6.1.2450-windows、jdk1.8.0_181 下載地址:https://download.csdn.net/download/code12313/91315686 配置sonar的地址 一、環境變量配置 1.新建變量,nameSONAR_RUNNER_MSBUILD_HOME。valueD:\work\dev\dev_serve…

python 在運行時沒有加載修改后的版本

陳舊的Python字節碼 (.pyc 文件):最常見的原因!Python 會把你修改的 .py 文件編譯成 .pyc 字節碼來加速后續運行。有時,即使你修改了 .py 文件,系統可能仍然固執地加載舊的、未被刪除的 .pyc 文件。1. 用“硬編碼探針”強制驗證# …

【會員專享數據】2013-2024年我國省市縣三級逐年SO?數值數據(Shp/Excel格式)

之前我們分享過2013-2024年全國范圍逐年SO?柵格數據(可查看之前的文章獲悉詳情)!該數據來源于韋晶博士、李占清教授團隊發布在國家青藏高原科學數據中心網站上的中國高分辨率高質量近地表空氣污染物數據集。很多小伙伴拿到數據后反饋柵格數據…

出現SSL連接錯誤的原因和解決方案

介紹 SSL連接錯誤是一種常見但關鍵的問題,這可能會阻止客戶端和服務器之間的安全連接。這些錯誤發生在TLS握手過程失敗時,這意味著客戶端和服務器無法建立安全的HTTPS連接。這種失敗可以在SSL/TLS協商過程中的任何階段發生,從初始協議協議到…

vue3 el-date-picker 保存后 日期減一問題

在使用 el-date-picker(Element UI 的日期選擇器組件)時,如果你發現日期在保存到后臺后自動減一,這通常是由于時區差異或者是時間格式解析問題導致的。這里有一些可能的解決方案:1. 檢查前端發送的日期格式確保你在前端…

什么是IP關聯?跨境賣家如何有效避免IP關聯?

一位深圳賣家曾管理30個亞馬遜店鋪賬號,某日清晨發現所有賬號被批量封禁——原因竟是平臺檢測到這些賬號長期共享同一IP地址,判定為“IP關聯”。而在跨境領域如亞馬遜、eBay、Shopee、TikTok等平臺),對于IP關聯的判定都是比較嚴格…

Redis集群方案——哨兵機制

Redis Sentinel(哨兵)是Redis官方提供的高可用性(HA)解決方案,用于管理Redis主從架構并實現自動故障轉移。一、集群結構和作用哨兵是一個分布式系統,由多個哨兵節點組成:哨兵的作用如下:監控:Se…

1.2.3_2 TCP/IP模型

在這個視頻中,我們要探討TCP/IP模型。對于TCP/IP模型考試的要求是這樣的,首先我們需要記住它各個層次的名稱和順序,以及我們需要了解TCP/IP 模型和OSI參考模型,它們在設計理念上有哪些區別,設計理念的區別又導致了TCP/…

EVOLVEpro安裝使用教程-蛋白質語言模型驅動的快速定向進化

寫在前面:蛋白質是生命活動的基石,其功能和序列之間的復雜關系長期以來吸引著科學家們的關注。盡管深度突變掃描等實驗方法可以解析蛋白質突變的功能影響,但這些技術的應用范圍局限于序列空間的一小部分。近年來,基于蛋白質語言模…

【Linux】Rocky Linux 清華鏡像源安裝 GitLab

使用清華鏡像源安裝 GitLab 地址:清華鏡像源 1. 搜索 gitlab,我們選擇 gitlab-ce 社區版進行安裝 2. 新建 /etc/yum.repos.d/gitlab-ce.repo,內容為 注意:el$releasever 是清華鏡像源內的文件夾版本 [gitlab-ce] nameGitlab C…

【龍澤科技】新能源汽車維護與動力蓄電池檢測仿真教學軟件【吉利幾何G6】

產品簡介新能源汽車維護與動力蓄電池檢測仿真教學軟件是依托《全國職業院校技能大賽》“新能源汽車維修”賽項中“新能源汽車維護與動力蓄電池檢測” 競賽模塊,自主開發的一款仿真教學軟件。軟件采用仿真技術對車輛進行指定維護作業,并對動力蓄電池總成進…

UE5多人MOBA+GAS 18、用對象池來設置小兵的隊伍的生成,為小兵設置一個目標從己方出生點攻打對方出生點,優化小兵的血條UI

文章目錄根據小兵隊伍更換小兵的皮膚管理小兵的生成使用對象池來管理小兵的生成為小兵設置一個目標小兵生成完整代碼調整一下小兵的UI根據小兵隊伍更換小兵的皮膚 懶得開UE了,增加一個Minion類繼承基類角色CCharacter // 幻雨喜歡小貓咪#pragma once#include &qu…

Clojure持久化數據結構的底層實現

文章目錄一、Clojure的持久化數據結構二、向量(Vector)/Map的底層結構?1. HAMT 哈希數組映射字典樹(1)簡介(2)HAMT 的核心思想(3)HAMT 的結構?a. 基本組成?b. 樹的分支因子?(4)H…