Java内存模型与String字符串
Java内存模型主要分为堆、栈、方法区三部分。
栈:是一种先进后出,后来者居上的内存模型,当方法进栈时,会进栈(压栈),执行完毕会出栈(弹栈)。
堆:new出的东西都在这里存放。
方法区:编译后的.class存在的位置。
StringTable(字符串串池) :在JDK7版本开始,从方法区挪到了堆内存。
为什么会有StringTable的存在。字符串是使用最广泛的数据结构,创建大量的字符串是十分占用堆内存空间的。
String特性:最大的特性为不可变性(引用)
保证类加载时的安全性
String s = "sss“
对s的修改,意味着创建一个新对象、
“ ”的方式创建一个字符串对象。如果这个对象在串池中存在就复用,不存在再创建新的
new 的方式创建对象,不会复用,同时会在串池中生成一个字符串。