成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

深入理解 Java String#intern() 內存模型

開發 后端
大家知道,Java中string.intern()方法調用會先去字符串常量池中查找相應的字符串,如果字符串不存在,就會在字符串常量池中創建該字符串然后再返回。

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

測試程序

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

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

Java 6

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

深入理解 Java String#intern() 內存模型

Java 7

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

深入理解 Java String#intern() 內存模型

 

但在Heap空間,新的對象不斷產生,然后不斷觸發GC

深入理解 Java String#intern() 內存模型

結論

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

責任編輯:王雪燕 來源: Code Log
相關推薦

2023-11-05 12:05:35

JVM內存

2022-06-22 08:02:11

CPU操作系統Java

2023-09-19 22:47:39

Java內存

2021-09-08 17:42:45

JVM內存模型

2023-10-27 07:47:58

Java語言順序性

2022-07-06 08:05:52

Java對象JVM

2020-11-11 08:45:48

Java

2020-11-04 15:35:13

Golang內存程序員

2013-06-20 10:25:56

2020-06-01 21:07:33

C11C++11內存

2021-11-26 00:00:48

JVM內存區域

2015-12-28 11:41:57

JVM內存區域內存溢出

2017-12-18 16:33:55

多線程對象模型

2010-06-01 15:25:27

JavaCLASSPATH

2016-12-08 15:36:59

HashMap數據結構hash函數

2020-07-21 08:26:08

SpringSecurity過濾器

2023-10-27 07:47:37

計算機內存模型

2022-08-21 16:52:27

Linux虛擬內存

2009-06-19 14:10:42

Java多態性

2023-10-19 11:12:15

Netty代碼
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲日本欧美 | 亚洲精品电影网在线观看 | 91精品一区二区三区久久久久久 | 日本高清aⅴ毛片免费 | 免费视频久久 | 久久精品免费 | 欧美高清性xxxxhd | 国产成人精品久久 | 精品国产一区二区国模嫣然 | 国内自拍偷拍视频 | 久久99久久99久久 | 欧美一级二级视频 | 麻豆亚洲 | 日韩精品一区二区三区中文在线 | 91极品视频 | 久久久.com| 综合色在线 | 日韩在线观看 | 精品一级| 免费在线观看一区二区 | 中文字幕 亚洲一区 | 一区二区三区四区在线 | 伊人亚洲| 欧美自拍第一页 | 国产一卡二卡三卡 | 91精品久久久久久久久中文字幕 | 欧美日韩视频网站 | 91资源在线观看 | 色婷婷综合久久久久中文一区二区 | 欧美a级成人淫片免费看 | 成人高清视频在线观看 | 亚洲精品电影网在线观看 | 涩爱av一区二区三区 | 日韩欧美视频网站 | 欧美一区二区三区久久精品 | av日韩在线播放 | 国产精品色| www.色五月.com | 极品在线| 久久久精彩视频 | 久久国产日本 |