> 文章列表 > Java内存模型与String字符串

Java内存模型与String字符串

Java内存模型与String字符串

Java内存模型主要分为堆、栈、方法区三部分。

栈:是一种先进后出,后来者居上的内存模型,当方法进栈时,会进栈(压栈),执行完毕会出栈(弹栈)。

堆:new出的东西都在这里存放。

方法区:编译后的.class存在的位置。

StringTable(字符串串池) :在JDK7版本开始,从方法区挪到了堆内存。

为什么会有StringTable的存在。字符串是使用最广泛的数据结构,创建大量的字符串是十分占用堆内存空间的。

String特性:最大的特性为不可变性(引用)

保证类加载时的安全性

String s = "sss“

对s的修改,意味着创建一个新对象

“ ”的方式创建一个字符串对象。如果这个对象在串池中存在就复用,不存在再创建新的

new 的方式创建对象,不会复用,同时会在串池中生成一个字符串。