常量池存儲字符串對象 幾種情景

1. 顯示調用String的intern方法的時候; 
2. 直接聲明字符串字面常量的時候,例如: String a = "aaa";
3. 字符串直接常量相加的時候,例如: String c = "aa" + "bb";  其中的aa/bb只要有任何一個不是字符串字面常量形式,都不會在常量池生成"aabb". 且此時jvm做了優化,不會同時生成"aa"和"bb"在字符串常量池中。

   在jdk1.7之前,字符串常量存儲在方法區的PermGen Space。在jdk1.7之後,字符串常量被移到了堆中。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章