久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合

站長(zhǎng)資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

深入解析JAVA中字符串常量池和緩沖池理解與作用

本篇文章給大家?guī)?lái)了關(guān)于java的相關(guān)知識(shí),其中主要介紹了字符串常量池和緩沖池的理解與作用,字符串池與常量池是完全不同的兩個(gè)東西,但是很多地方都喜歡把它們混為一談,很容易讓初學(xué)者產(chǎn)生誤解,在這里我想好好討論一下它們,希望對(duì)大家有幫助。

深入解析JAVA中字符串常量池和緩沖池理解與作用

推薦學(xué)習(xí):《java學(xué)習(xí)教程》

字符串池也可以被稱(chēng)為字符串常量池,我認(rèn)為這個(gè)名稱(chēng)就是產(chǎn)生誤解的根源,有些人說(shuō)著說(shuō)著就把字符串三個(gè)字省略了,只剩下了常量池… 所以為了避免誤解,我建議在指代字符串對(duì)象的緩存池的時(shí)候,就直接稱(chēng)之為字符串池

1 常量池

常量池分為兩個(gè)類(lèi)型,一是.class文件中靜態(tài)的常量池,二是.class文件中的靜態(tài)常量池被加載到JVM中而形成的運(yùn)行時(shí)常量池

1.1 靜態(tài)常量池

.class文件中的常量池可以看作一個(gè)數(shù)組,數(shù)組中存儲(chǔ)了一些常量,當(dāng)需要在字節(jié)碼指令中用到這個(gè)常量的時(shí)候,就通過(guò)數(shù)組的索引來(lái)訪問(wèn)它。

看下面的代碼:

 String m = "hellohellohellohellohello";  String n = "hellohellohellohellohello";

它在字節(jié)碼中將會(huì)是這種形式:

 // 常量池:  #1 hellohellohellohellohello  #2 ...  ...  ----------------------------    String m = #1;  String n = #1;

當(dāng)然,這只是一個(gè)簡(jiǎn)化的版本,實(shí)際上要更加復(fù)雜 (實(shí)際的版本可以看文章末尾參考資料部分里面貼出的那個(gè)回答,目前可以先只考慮簡(jiǎn)化的版本)

注意,在這個(gè)里面存儲(chǔ)的字符串常量只是一個(gè)簡(jiǎn)單的UTF8編碼的字節(jié)序列,而不是Java的字符串對(duì)象,它就和你在一個(gè)txt文本中存儲(chǔ)的字符串一樣,我們用UTF8格式來(lái)打開(kāi)一個(gè).class文件,可以看到hellohellohellohellohello是可以被解析的:深入解析JAVA中字符串常量池和緩沖池理解與作用

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

理解了靜態(tài)的常量池之后,運(yùn)行時(shí)常量池就很容易想明白了。簡(jiǎn)單來(lái)說(shuō),運(yùn)行時(shí)常量池就是.class文件中的靜態(tài)常量池在JVM中的運(yùn)行時(shí)表示,每一個(gè).class文件的靜態(tài)常量池都會(huì)生成一個(gè)對(duì)應(yīng)的運(yùn)行時(shí)常量池。等到JVM在解釋String m = #1這條指令時(shí),它可以去這個(gè)類(lèi)的運(yùn)行時(shí)常量池中查找#1的定義。

2 字符串池

字符串池是Java為了重用String對(duì)象而設(shè)置的一個(gè)緩存池,Java1.7之前設(shè)置在方法區(qū)上,保存的是String對(duì)象;Java1.7之后設(shè)置在堆上,保存的是String對(duì)象的引用,String對(duì)象本身存在于堆上的其他位置。下文中以Java1.7之后的情況為標(biāo)準(zhǔn)。

繼續(xù)上面的例子。當(dāng)JVM在解釋String m = #1時(shí),它已經(jīng)從運(yùn)行時(shí)常量池拿到了相應(yīng)的UTF8序列,接下來(lái),它會(huì)在字符串池中尋找和這個(gè)UTF8序列對(duì)應(yīng)的String對(duì)象,并把這個(gè)對(duì)象的引用賦值給m。你可能會(huì)好奇這個(gè)String被創(chuàng)建的時(shí)機(jī),根據(jù)R大的這篇文章,在這條語(yǔ)句所在的類(lèi)被加載時(shí),如果字符串池中已經(jīng)存在對(duì)應(yīng)的對(duì)象了,那么就什么都不做,如果不存在,就會(huì)創(chuàng)建一個(gè)對(duì)應(yīng)的String對(duì)象,并把其引用放入池中。

除了字符串池,IntegerLong等Wrapper類(lèi)型也有自己的緩存池,比如Integer會(huì)緩存從-128~127的Integer對(duì)象,當(dāng)使用字面量賦值或者Integer.valueOf()時(shí),如果池中存在相應(yīng)的對(duì)象,就會(huì)返回池中的對(duì)象,只有當(dāng)池中沒(méi)有時(shí)才會(huì)在堆上創(chuàng)建新對(duì)象。

不過(guò),和字符串池不同的時(shí),這些Wrapper池不會(huì)像字符串池一樣可以增長(zhǎng),也就是池中的對(duì)象數(shù)目是固定的,Integer池中只會(huì)有-128~127。

基本類(lèi)型對(duì)應(yīng)的緩沖池如下:

boolean values true and false  all byte values  short values between -128 and 127  int values between -128 and 127  char in the range u0000 to u007F

在 jdk 1.8 所有的數(shù)值類(lèi)緩沖池中,Integer 的緩沖池 IntegerCache 很特殊,這個(gè)緩沖池的下界是 – 128,上界默認(rèn)是 127,但是這個(gè)上界是可調(diào)的,在啟動(dòng) jvm 的時(shí)候,通過(guò) -XX:AutoBoxCacheMax= 來(lái)指定這個(gè)緩沖池的大小,該選項(xiàng)在 JVM 初始化的時(shí)候會(huì)設(shè)定一個(gè)名為 java.lang.IntegerCache.high 系統(tǒng)屬性,然后 IntegerCache 初始化的時(shí)候就會(huì)讀取該系統(tǒng)屬性來(lái)決定上界。

推薦學(xué)習(xí):《java教程》

贊(0)
分享到: 更多 (0)
?
網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合
a天堂资源在线| 欧洲av不卡| 男人的天堂久久精品| 噜噜噜久久亚洲精品国产品小说| 亚洲国产成人精品女人| 老司机精品久久| 欧美午夜网站| 神马久久午夜| 久久亚洲一区| 精品视频一区二区三区四区五区 | 午夜av成人| 亚洲欧美日韩国产一区| 日韩有码av| 国产成人精品一区二区三区视频| 国产精品99免费看| 欧美日韩一区二区高清| 成人久久一区| 日韩高清在线不卡| 久久久五月天| 欧美专区一区二区三区| 国产精品第十页| 亚洲深夜福利| 韩国女主播一区二区三区| 制服诱惑一区二区| 成人在线免费观看网站| 99视频精品| 国产探花一区| 婷婷综合一区| 香蕉精品视频在线观看| 欧美精品高清| 国产欧美一区二区三区米奇| 日韩亚洲在线| 日韩不卡视频在线观看| 国产欧美日韩一区二区三区四区 | 亚洲综合小说| 成人福利视频| 欧美国产另类| 免费久久99精品国产| 红桃视频国产精品| 高清不卡亚洲| 国内揄拍国内精品久久| 国产精品麻豆成人av电影艾秋| 日韩欧美激情| 一区二区日韩免费看| 欧美专区18| 亚洲免费精品| 欧美日韩尤物久久| 美女av一区| 精品一区二区三区中文字幕在线| 欧美1区二区| 国产精品第一国产精品| 国产精品大片免费观看| av最新在线| 亚洲日本在线观看视频| 新版的欧美在线视频| 日韩二区在线观看| 免费在线成人网| 免费一区二区视频| 爽爽淫人综合网网站| 视频一区国产视频| 午夜久久99| 精品捆绑调教一区二区三区| 精品免费在线| 国产videos久久| 国际精品欧美精品| 国产v日韩v欧美v| 日韩欧美少妇| 精品在线91| 久久福利毛片| 日韩av在线免费观看不卡| 欧美日本久久| sm久久捆绑调教精品一区| av综合电影网站| 午夜精品免费| 日韩中文字幕亚洲一区二区va在线| 久久一二三区| 日韩一区二区久久| 亚洲一区二区日韩| 国产极品模特精品一二| 91视频一区| 亚洲精品a级片| 国产探花一区在线观看| 91中文字幕精品永久在线| 精品一区亚洲| 国产精品中文字幕制服诱惑| 高清不卡亚洲| 免费在线观看精品| 精品中国亚洲| 国产亚洲一级| 国产精品一线天粉嫩av| 久久久久欧美精品| 蜜乳av另类精品一区二区| 国产探花一区| 久久国产成人午夜av影院宅| 三级在线观看一区二区| 久久99精品久久久久久园产越南| 精品视频99| 日韩在线成人| 欧美高清不卡| 国产成人77亚洲精品www| 热久久久久久久| 欧美成人精品三级网站| 亚洲人成亚洲精品| 国产黄色一区| 亚洲精选91| 欧美日韩一区二区综合 | 亚洲精品国模| 极品av在线| 日韩国产精品久久久| 欧美成人基地| 国产精品探花在线观看| 激情欧美日韩一区| 久久久精品国产**网站| 综合激情视频| 日韩亚洲一区在线| 日本伊人久久| 欧美日韩精品一本二本三本| 国产精品美女久久久久久不卡| 久久在线视频免费观看| 亚洲精品伊人| 精品视频在线观看网站| 国产免费成人| 久久精品二区三区| 国精品产品一区| 久久精品国产亚洲一区二区三区| 免播放器亚洲一区| 亚洲一区二区成人| 欧美99久久| 红桃视频国产一区| 精品一区在线| 极品日韩av| 欧美日韩激情| 亚洲精品电影| 久久夜色精品| 日韩欧美精品一区二区综合视频| 91一区二区三区四区| 日韩88av| 成人免费电影网址| 激情久久久久久久| 影音先锋国产精品| 少妇精品在线| 国产麻豆一区二区三区精品视频| 欧美一区二区三区久久| 麻豆一区二区在线| 成人影视亚洲图片在线| 久久久久亚洲| 亚洲区第一页| 91欧美日韩| 一区二区高清| 精品久久一区| 国产网站在线| 亚洲精品一区二区在线看| 日本在线视频一区二区| 国产精品777777在线播放| 国产aⅴ精品一区二区四区| 91精品韩国| 亚洲涩涩av| 成人国产精品久久| 国产一区日韩一区| 日韩动漫一区| 蜜臀久久精品| 亚洲精品在线二区| 97在线精品| 日产午夜精品一线二线三线| 亚洲精品电影| 日韩精品免费观看视频| 成人午夜网址| 亚洲精品99| 久久久久久色| 日韩精品一卡| 日韩av网站免费在线| 精品一区毛片| 开心激情综合| 亚洲理论在线| 亚洲成人三区| 精品一区二区三区在线观看视频| 日韩在线一区二区| 91精品国产成人观看| 久久精品伊人| 国产精品伦一区二区| 999久久久国产精品| 国产高清日韩| 欧美有码在线| 免费一级片91| 欧美99久久| 久久国产欧美| 精品欧美日韩精品| 日本不卡一区二区| 日韩精品一区第一页| 波多野结衣一区| 樱桃视频成人在线观看| 麻豆久久久久久| 日韩精彩视频在线观看| 亚洲一区二区三区四区电影 | 亚洲精品九九| 亚洲精品国产精品粉嫩| 亚洲精选av| 日本亚洲视频在线| 日韩超碰人人爽人人做人人添| 五月国产精品|