
1、三大区域基础概念1.1 栈(Stack,虚拟机栈)存放:局部变量(对象引用、基本类型变量),方法调用时创建栈帧,方法执行完毕自动出栈销毁。特点:内存小、速度快,线程私有。⚠️ 栈里不会存放对象本身,只存对象的地址引用。1.2堆(Heap)存放:所有 Java 对象实例,线程共享,GC 回收。JDK7 + 重要变化:字符串常量池从方法区移动到堆中,属于堆的子区域。1.3字符串常量池(String Pool)本质:堆内一张哈希表,缓存字符串对象,目的是复用字符串,减少重复对象创建,节省内存。规则:写字面量"a"时,JVM 优先去常量池查找,找到就直接复用;找不到,就在常量池新建 String 对象。❗区分:字符串常量池 ≠ 运行时常量池。运行时常量池在元空间(Metaspace),不属于堆。2、案例String s1 = "a";和String s2 = new String("a");2.1 Java 示例代码public class StringMemoryDemo { public static void main(String[] args) { // 方式1:字面量赋值 String s1 = "a"; // 方式2:new 构造方法创建 String s2 = new String("a")