1,各司其中
最主要的区别就是栈内存就是存储局部变量和方法调用,堆是用来存储Java中的对象,无论是成员变量,局部变量还是类变量,他们指向的对象都是存储在堆内存中
2,独有还是共享
...栈内存是单线程,没个线程都会有一个栈内存,存存储的变量只能在其所属线程中可见,即栈内存可以理解为线程的私有内存.而堆内存中的对象对所有线程可见.堆内存中的对象可以被所有线程访问
3,异常错误
...栈内存不足会报 java.lang.StackOverFlowError
堆内存不足会报java.lang.OutOfMemoryError
4,空间大小
栈的内存远小于堆内存,可以通过...xss设置栈大小,-xms设置堆初始化大小,xmx设置堆最大值