Java中堆和栈的区别?

参考答案

  • java中所有new 出来的对象都使用了堆内存;而栈内存中主要存放的是方法内的局部变量和堆中对象的引用

  • java中堆的内存的管理使用的是垃圾回收机制,堆中对象在不再被引用时被垃圾回收;栈中的内存几乎不需要管理,占用的内存在方法调用结束后释放

  • 堆的优势是可以动态地分配内存大小,存在栈中的数据大小与生存期是编译阶段就确定了的

  • 栈的存取速度比堆要快,堆中对象访问需要通过额外的一步引用寻址

  • 栈数据在多个线程或者多个栈之间是不可以被直接共享的(线程安全);而堆中的数据可以为多个线程或多个栈方法共享引用(需要注意线程安全问题)


results matching ""

    No results matching ""