Java 堆和栈的区别 参考背景: 堆内存:用来存放由new创建的对象和数组; 栈内存:存放基本类型的变量,对象的引用变量; 堆存放的原因:由于在堆中创建对象(或数组)后,可在栈中定义一个特殊变量,让其取值为对象(或数组)在堆内中的首地址,即为其原理;栈存放的原因:由于追求速度的原因,基本类型放置于栈中; 补充:堆中分配的内存,由Java虚拟机的自动垃圾回收器来管理;