免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
java 中的常量池

在 java 中,常量池分為以下三種:

  • class 常量池
  • 字符串常量池
  • 運行時常量池

一、class 常量池

1. 是什么?

是class文件中的資源倉庫。我們的 class 文件,用十六進(jìn)制編輯器( notepad++ 安裝 Hex-editor )打開,可以發(fā)現(xiàn)它第二行的內(nèi)容是這樣的:

cafe babe 0000 0033 0010 0a00 0300 0d07……

每個 class 文件用十六進(jìn)制編輯器打開,開頭都是 cafe babe,這個叫魔數(shù)。那么剩下的是什么意思呢?

cafe babe       0000      0033       0010             0a00 0300 0d07……
   魔數(shù)       次版本號   主版本號   常量池計數(shù)器          常量池數(shù)據(jù)區(qū)……

看到?jīng)],這里就有常量池。啊這,我說它是就是,我說就一定對嗎?我們可以使用如下命令,查看字節(jié)碼文件:

javap -verbose Test.class

執(zhí)行之后會看到:

class常量池

看吧,我是不會騙你的!

2. 位置:

既然說了是 class 常量池,那它就是在 class 文件中。

3. 保存的數(shù)據(jù):

class 常量池保存的東西主要有以下兩類:

  • 字面量:簡單地理解為等號右邊的值,比如類中定義了int a = 1; String str = "hello",那么 1 和 hello 都是字面量。

  • 符號引用:類和接口的全限定名、字段的名稱和描述符、方法的名稱和描述符,這些就叫符號引用。

二、字符串常量池

1. 是什么?

顧名思義,就是用來保存字符串的常量池。為了提高執(zhí)行效率、節(jié)省內(nèi)存開銷,從而整了個字符串常量池來緩存字符串?dāng)?shù)據(jù)。關(guān)于 String 的詳細(xì)介紹,請參考我另一篇文章 String類相關(guān)面試題很難?不要方,問題不大。

2. 位置:

  • jdk 1.7 之前,字符串常量池在方法區(qū)

  • jdk 1.7 及之后,字符串常量池在堆內(nèi)存中

三、運行時常量池

1. 是什么?

當(dāng) class 文件通過 ClassLoader 加載到 JVM 內(nèi)存時,會把 class 常量池 中的內(nèi)容加載到方法區(qū)的一塊內(nèi)存中,這塊內(nèi)存就叫運行時常量池。

2. 位置:

運行時常量池在方法區(qū)中,jdk 1.7 極其之前方法區(qū)的實現(xiàn)叫永久代,jdk 1.8 開始叫元空間。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
深入java虛擬機第5章, class文件常量池中字符串類urf8格的存儲格式
Java 常量池
天啊!Java原來這么可以這么簡單
JVM運行原理詳解
JVM內(nèi)存模型有這篇文章就夠了
JVM內(nèi)存模型總結(jié),有各版本JDK對比、有元空間OOM監(jiān)控案例、有Java版虛擬機,綜合學(xué)習(xí)更容易!
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服