常量池盗蟆、運(yùn)行時(shí)常量池、字符串常量池

常量池舒裤、運(yùn)行時(shí)常量池喳资、字符串常量池

Java里包含各種常量池,經(jīng)常傻傻分不清楚腾供,下面就簡單梳理下Java中的池們仆邓。

概念解釋

常量池

這里的常量池指的是Class文件常量池鲜滩。常量池里主要放兩類常量:

  1. 字面量 :Java語言中定義的常量,如使用final修飾的值
  2. 符號引用 :表示JVM定義的Java關(guān)鍵字或基本類型與實(shí)際結(jié)構(gòu)轉(zhuǎn)換關(guān)系

符號引用主要包含以下三種類型:

  1. 類和接口的全限定名(Fully Qualified Name)

  2. 字段的名稱和描述符(Descriptor)

  3. 方法的名稱和描述符

上面說的常量池在JVM中的結(jié)構(gòu)都是一張表节值。具體有哪些類型的表可以參考下圖

常量池類型表.png

運(yùn)行時(shí)常量池

運(yùn)行時(shí)常量池就是類被JVM加載后在JVM中的版本徙硅。有一點(diǎn)兒區(qū)別就是常量池只有類文件在編譯的時(shí)候才會產(chǎn)生,而且是存儲在類文件中的搞疗。而運(yùn)行時(shí)常量池是在方法區(qū)嗓蘑,而且可在JVM運(yùn)行期間動態(tài)向運(yùn)行時(shí)常量池中寫入數(shù)據(jù)。

字符串常量池

字符串常量池是因?yàn)镴ava為String開辟的一塊內(nèi)存緩沖區(qū)匿乃,為了提高性能同時(shí)減少內(nèi)存開銷桩皿。在JVM中,字符串常量池由一個(gè)hash表實(shí)現(xiàn)幢炸。默認(rèn)容量為1009泄隔。當(dāng)字符串常量池中的存儲比較多的字符串時(shí),會導(dǎo)致hash沖突宛徊,從而每個(gè)節(jié)點(diǎn)形成長長的鏈表佛嬉,導(dǎo)致性能下降。所以在使用字符串常量池時(shí)闸天,一定要控制容量暖呕。

-XX:StringTableSize

通過這個(gè)參數(shù)可以指定字符串常量池的容量

不同Jdk中字符串常量池的演化

jdk6及以前字符串常量池中存放的是字符串常量
jdk7字符串常量池中存放的是指定字符串的引用

參考

  • <<深入理解Java虛擬機(jī): JVM高級特性與最佳實(shí)踐>>
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市号枕,隨后出現(xiàn)的幾起案子缰揪,更是在濱河造成了極大的恐慌,老刑警劉巖葱淳,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異抛姑,居然都是意外死亡赞厕,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進(jìn)店門定硝,熙熙樓的掌柜王于貴愁眉苦臉地迎上來皿桑,“玉大人,你說我怎么就攤上這事蔬啡』逦辏” “怎么了?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵箱蟆,是天一觀的道長沟绪。 經(jīng)常有香客問我,道長空猜,這世上最難降的妖魔是什么恨旱? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任搜贤,我火速辦了婚禮,結(jié)果婚禮上仪芒,老公的妹妹穿的比我還像新娘掂名。我一直安慰自己铆隘,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著雳窟,像睡著了一般封救。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上惩坑,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天,我揣著相機(jī)與錄音蔓钟,去河邊找鬼瓦侮。 笑死肚吏,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的斋泄。 我是一名探鬼主播炫掐,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼痹束,長吁一口氣:“原來是場噩夢啊……” “哼祷嘶!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤荧降,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后剪返,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體邑滨,經(jīng)...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡哎壳,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了吱涉。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片刹泄。...
    茶點(diǎn)故事閱讀 40,664評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡邑飒,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出疙咸,到底是詐尸還是另有隱情乞旦,我是刑警寧澤顶瞳,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站协饲,受9級特大地震影響畏腕,放射性物質(zhì)發(fā)生泄漏缴川。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一流昏、第九天 我趴在偏房一處隱蔽的房頂上張望扎即。 院中可真熱鬧,春花似錦况凉、人聲如沸谚鄙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽闷营。三九已至,卻和暖如春知市,著一層夾襖步出監(jiān)牢的瞬間傻盟,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工嫂丙, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留娘赴,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓跟啤,卻偏偏與公主長得像诽表,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子隅肥,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評論 2 359

推薦閱讀更多精彩內(nèi)容

  • ??需要說明的一點(diǎn)是竿奏,這篇文章是以《深入理解Java虛擬機(jī)》第二版這本書為基礎(chǔ)的,這里假設(shè)大家已經(jīng)了解了JVM的運(yùn)...
    Geeks_Liu閱讀 14,030評論 5 44
  • JVM中的字符串常量池是個(gè)有些玄幻的玩意兒腥放,關(guān)于它的細(xì)節(jié)泛啸,各類書籍和網(wǎng)站上眾說紛紜。本文試圖參考盡量權(quán)威的資料秃症,找...
    LittleMagic閱讀 3,092評論 8 20
  • 概述 在分析字符串常量池之前候址,先來分析一下java的內(nèi)存區(qū)域,然后再各種的情況分析一下各種情況下的情況种柑; 在《深入...
    riverhh閱讀 829評論 0 2
  • 這篇文章是我之前翻閱了不少的書籍以及從網(wǎng)絡(luò)上收集的一些資料的整理宗雇,因此不免有一些不準(zhǔn)確的地方,同時(shí)不同JDK版本的...
    高廣超閱讀 15,629評論 3 83
  • 《氣質(zhì)》理想篇 什么樣的事業(yè)泌神、足以讓人在回顧一生辛勞的時(shí)候良漱,感到足慰平生的幸福和自豪舞虱? 和一支這樣的隊(duì)伍在一起?是...
    讀行人聲閱讀 462評論 0 0