国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

jvm 什么是常量池,常量池定義 class常量池

這篇具有很好參考價值的文章主要介紹了jvm 什么是常量池,常量池定義 class常量池。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

首先需要理解下Java的class文件,以及class文件結構:

1.Class文件是一組以8個字節(jié)為基礎單位的二進制流,各個數(shù)據項目嚴格按照順序緊湊地排列在文 件之中,中間沒有任何分隔符,這使得整個Class文件中存儲的內容幾乎全部是程序運行的必要數(shù)據,沒有空隙存在。當遇到需要占用8個字節(jié)以上空間的數(shù)據項時,則會按照高位在前的方式分割 成若干個8個字節(jié)進行存儲

??? 注: 任何一個Class文件都對應著唯一的一個類或接口的定義信息,但是反過來說,類或 接口并不一定都得定義在文件里(譬如類或接口也可以動態(tài)生成,直接送入類加載器中)

2.Class文件格式采用類c語言結構體的偽結構來存儲數(shù)據

??????????? 結構:

????????????????????? a. 無符號數(shù)

????????????????????? b.

????? a.無符號數(shù)屬于基本數(shù)據類型,u1:代表1個字節(jié)無符號數(shù),有四個參數(shù) u1, u2, u4, u8。 它們們用來描述數(shù)組,索引引用,數(shù)量值或字符串

????? b. :無符號數(shù)或者其他表作為數(shù)據項構成的復合數(shù)據類型,為了便于區(qū)分,所有表的命名 都習慣性地以“_info”結尾。表用于描述有層次關系的復合結構的數(shù)據,整個Class文件本質上也可以視 作是一張表,這張表由下圖所示的數(shù)據項按嚴格順序排列構成

jvm 什么是常量池,常量池定義 class常量池,jvm

?3. 圖中的constant_poll 即常量池,是class中的表結構(類型cp_info)

?4. 常量池可以比喻為class文件存放的資源倉庫,它是class結構中與其他項目引用最多的數(shù)據,通常也是占用class文件空間最大的數(shù)據項目之一

?5. 常量池入口為u2類型數(shù)據,為常量池容量計數(shù)值,常量池中有21項常量。索引范圍1~21

?6. 常量池存放類型

???? a. 字面量(Literal)

???? b. 符號引用(Symbolic References)

?? 字面量: 文本字符串,聲明為final的常量值等

?? 符號引用:

??????????????????? ·被模塊導出或者開放的包(Package)

??????????????????? ·類和接口的全限定名(Fully Qualified Name)

??????????????????? ·字段的名稱和描述符(Descriptor)

????????????????? ? ·方法的名稱和描述符

??????????????????? ·方法句柄和方法類型(Method Handle、Method Type、Invoke Dynamic)

??????????????????? ·動態(tài)調用點和動態(tài)常量(Dynamically-Computed Call Site、Dynamically-Computed Constant)

7. class文件不會保存方法,或字段的值而是通過常量池進行轉換使用。虛擬機進行類加載時,從常量池獲取到字面量(一些常量值),符號引用(指針引用數(shù)據),在類創(chuàng)建或運行時解析,從常量池拿到這些數(shù)據,到具體的內存地址之中。(我認為與將代碼中的魔法值,類似1,2,字符串等抽出來,單獨放到一個類中類似,常量池就是做這個的)

8.常量池每一項常量都是一個表,截止jdk13,一共有17種不同類型常量:

jvm 什么是常量池,常量池定義 class常量池,jvm

9. 總結來說,常量池就是存儲類中(編譯后的class文件):字符串的值,final常量,方法引用,方法描述,方法類型等的表結構文章來源地址http://www.zghlxwxcb.cn/news/detail-670758.html

到了這里,關于jvm 什么是常量池,常量池定義 class常量池的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • JVM運行時數(shù)據區(qū)——字符串常量池位置的調整

    JVM運行時數(shù)據區(qū)——字符串常量池位置的調整

    ????????在JDK6及之前,使用永久代來實現(xiàn)方法區(qū),字符串常量池(StringTable)是在 永久代(方法區(qū))中 的,但是方法區(qū)的回收效率不高,在Full GC時才會回收。 ? ????????在JDK7中,將字符串常量池 轉移到了堆中 ,分配在年輕代和老年代中。 ????????在JDK8中,為了 融合

    2024年02月16日
    瀏覽(49)
  • Thinkphp定義位置常量

    ThinkPHP 是一個流行的 PHP 開發(fā)框架,它提供了豐富的功能和便捷的開發(fā)方式。在 ThinkPHP 中,我們可以使用常量來定義一些通用的配置信息或路徑,以便于代碼的維護和管理。在本文中,我們將探討 ThinkPHP 中定義位置常量的作用和用法。 一、什么是位置常量? 位置常量是在

    2024年02月12日
    瀏覽(18)
  • 【JVM學習】Class文件解析

    最近為了加深對于JAVA的理解,在復習JVM,這里面的內容大部分都是比較確定的、文檔性質的內容,目前并沒有特別的總結。但是看到類文件結構,手癢,想寫了個解析文件的解析器,那就簡單記錄下吧。 詳細內容不記了,太多了,有興趣的同學看虛擬機相關書籍了解,這里

    2023年04月13日
    瀏覽(19)
  • 什么是常量?如何區(qū)分常量和變量?

    ????????什么是常量,什么是變量?怎樣區(qū)分?者? 1. 常量與變量 ? ? ? ? (1)常量即其值在程序運?的過程中是不可以改變的,如123,-4567 為數(shù)值常量; ? ? ? ? (2)變量是在程序運?期間其值是可以進?變化的量? ????????????????如 int a; char b:是整型變

    2024年02月02日
    瀏覽(22)
  • TypeScript枚舉:方便的常量定義方式

    在 TypeScript 中,枚舉是一個非常重要的特性,它提供了一種方便的常量定義方式。在本文中,我們將詳細探討 TypeScript 枚舉的用法和優(yōu)勢。 枚舉是指 一組命名的常量 ,這些常量稱為 枚舉成員 。枚舉可以在 TypeScript 中以類似于 C# 和 Java 的方式來定義,它們在 JavaScript 中被編

    2024年02月11日
    瀏覽(16)
  • 從執(zhí)行class文件開始認識JVM

    編寫好的java文件經過javac編譯成class文件,使用java命令執(zhí)行對應得我class文件,這時候jvm開始運行 首先,jvm需要將class文件裝載進入內存空間(類加載機制) 在內存中分配空間(認識JVM運行時數(shù)據區(qū)) 類加載機制 類加載分為幾個步驟 裝載 class文件裝載進JVM首先要進行的就是

    2024年02月10日
    瀏覽(26)
  • 一、認識 JVM 規(guī)范(JVM 概述、字節(jié)碼指令集、Class文件解析、ASM)

    一、認識 JVM 規(guī)范(JVM 概述、字節(jié)碼指令集、Class文件解析、ASM)

    JVM : Java Virtual Machine ,也就是 Java 虛擬機 所謂虛擬機是指:通過軟件模擬的具有完整硬件系統(tǒng)功能的、運行在一個完全隔離環(huán)境中的計算機系統(tǒng)。 即:虛擬機是一個計算機系統(tǒng)。這種計算機系統(tǒng)運行在完全隔離的環(huán)境中,且它的硬件系統(tǒng)功能是通過軟件模擬出來的。 JVM 通

    2024年01月23日
    瀏覽(31)
  • 探索 Go 語言中 iota 的神奇力量,優(yōu)雅定義常量!

    大家好!在今天的文章中,我將為大家介紹一下關于 golang 中的 iota 的使用技巧和注意事項。作為一種枚舉常量生成器,iota 在 golang 中被廣泛使用,可以簡化代碼和提高可讀性。下面就讓我們來了解一些關鍵的使用技巧和注意事項吧! 在 golang 中,iota 是一個預定義標識符,

    2024年02月13日
    瀏覽(17)
  • JAVA-JVM 之Class字節(jié)碼文件的組成 【上篇】

    JAVA-JVM 之Class字節(jié)碼文件的組成 【上篇】

    主頁傳送門:?? 傳送 ??java的特點是跨平臺性,而跨平臺的運行標準是Class字節(jié)碼文件,Class字節(jié)碼是提供平臺無關性的基礎模型,使我們無須考慮如何兼容異構系統(tǒng),只須被JVM識別即可。 ??字節(jié)碼是Java虛擬機中的核心,是Java源代碼的一種中間表示形式。簡單來說,字

    2024年02月06日
    瀏覽(20)
  • 二、GoLang輸出HelloWorld、基本數(shù)據類型、變量常量定義、基本類型轉換

    go語言中,想要輸出內容到控制臺,package必須是main,包括方法名也必須是main, go語言輸出的語法是 fmt 庫。 Go語言的基本類型有: boolean:布爾類型 true / false string :字符串類型 數(shù)值型: int8:有符號8位整型(-128到127)長度 int16:有符號16位整型(-32768到32767)長度 int32:有

    2024年02月09日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包