日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
深入理解JavaString#intern()內(nèi)存模型

字符串常量池是一個固定大小的HashMap,桶的數(shù)量默認(rèn)是1009, 從Java7u40開始,該默認(rèn)值增大到60013。在Java6當(dāng)中,字符串常量池是放在Perm空間的,從Java7開始,字符串常量池被移到Heap空間。下面,我們通過測試程序來窺探字符串常量池在Java6,Java7兩個不同版本底下的內(nèi)存分配情況。

創(chuàng)新互聯(lián)建站專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站設(shè)計、成都做網(wǎng)站、寶安網(wǎng)絡(luò)推廣、小程序設(shè)計、寶安網(wǎng)絡(luò)營銷、寶安企業(yè)策劃、寶安品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;創(chuàng)新互聯(lián)建站為所有大學(xué)生創(chuàng)業(yè)者提供寶安建站搭建服務(wù),24小時服務(wù)熱線:028-86922220,官方網(wǎng)址:www.cdcxhl.com

測試程序

 
 
  1. public class StringPoolTest {
  2.     public void testStringPoolWithLongString(){
  3.         long i=0;
  4.         while(true){
  5.             String longString = "This is a very long string, very very long string to test the gc behavior of the string constant pool"+i;
  6.             longString.intern();
  7.             i++;
  8.         }
  9.     }
  10.     public static void main(String[] args){
  11.         StringPoolTest stringPoolTest = new StringPoolTest();
  12.         stringPoolTest.testStringPoolWithLongString();
  13.     }
  14. }

測試程序很簡單,一個死循環(huán),循環(huán)里面通過遞增變量i制造唯一的字符串,然后用main函數(shù)啟動程序。

Java 6

我們使用版本Jdk1.6.0_29來跑該程序,打開Java VisualVM監(jiān)控,可以看到,Perm區(qū)不斷發(fā)生GC,由此的出結(jié)論,雖然字符串常量池放在Perm空間,但當(dāng)Perm空間接近滿的時候,JVM會將字符串常量池中的無用字符串回收掉。


Java 7

下面,我們切換到Jdk1.7.0_67重跑該程序,可以看到Perm區(qū)內(nèi)存分配曲線很平滑,沒有出現(xiàn)內(nèi)存分配的現(xiàn)象。

但在Heap空間,新的對象不斷產(chǎn)生,然后不斷觸發(fā)GC

結(jié)論

由于Perm區(qū)大小是有限的,通常只有幾十MB,所以不推薦在Java6下廣泛使用String.intern(),這篇文章string-intern-in-java-6-7-8的性能測試表明,在Java6底下大量使用intern()會導(dǎo)致應(yīng)用性能的顯著下降,還有可能產(chǎn)生OOM錯誤。但從Java7開始,字符串常量池被移到了Heap空間,Heap空間的大小只受制于機(jī)器的真實內(nèi)存大小,因此,在Java7下使用String.intern()能更有效地減少重復(fù)String對象對內(nèi)存的占用。


分享題目:深入理解JavaString#intern()內(nèi)存模型
網(wǎng)址分享:http://www.5511xx.com/article/dhghdoi.html