String之常量池

String不变性

String中的值一旦确定则不可修改,不可修改指的是内存中的值不能修改而不是变量的值不能修改。

String之常量池

String常量池

 使用双引号创建的字符称为String常量,也就是字符常量。

1、字符常量被存放在内存的常量池中

2、常量池中的值不会被gc回收,即gc不会清理这个区域的内容。

3、多次出现的字符常量,追在常量池中创建一个String对象(JVM做了优化)

常量池的位置:

jdk1.6中,常量池在方法区的PermGen Space永久代中(就是一个永久保存区域)

jdk1.7中,常量池在堆内存中

jdk1.8中,常量池在元空间中,和堆相独立

String之常量池

 

String之常量池