Java中堆和栈的区别?
参考答案
java中所有new 出来的对象都使用了堆内存;而栈内存中主要存放的是方法内的局部变量和堆中对象的引用
java中堆的内存的管理使用的是垃圾回收机制,堆中对象在不再被引用时被垃圾回收;栈中的内存几乎不需要管理,占用的内存在方法调用结束后释放
堆的优势是可以动态地分配内存大小,存在栈中的数据大小与生存期是编译阶段就确定了的
栈的存取速度比堆要快,堆中对象访问需要通过额外的一步引用寻址
栈数据在多个线程或者多个栈之间是不可以被直接共享的(线程安全);而堆中的数据可以为多个线程或多个栈方法共享引用(需要注意线程安全问题)