栈(stack):
1.先进后出,后进先出,系统自动分配,速度快,是一个连续的内存空间。
2.属于线程私有,不能实现线程间共享。
3.是方法执行的内存模型,每个方法都被条用都会创建一个栈桢(存储局部变量,操作数,方法出口等);
4.jvm为每个线程创建一个栈,用于存放该线程执行的方法信息(参数,变量等)
堆(heap):
1存储对象;
2.jvm只有一个堆,被所有线程共享;
3.不是一个连续的空间。分配灵活,速度慢。
方法区:
1实际也是堆,jvm只有一个,被所有线程共享;
2用于存放程序中永远不变或唯一的内容(类信息、静态变量、静态方法、字符串常量等)