栈(stack)
- 方法执行的内存模型,方法被调用就会在栈中创建一个栈帧(存储局部变量,操作数,方法出口等)
- JVM中有多个栈,是一个连续的空间。栈属于线程私有,不能进行共享
- 特点:先进后出,后进先出
堆(heap)
- 用于存储创建好的对象和数组(new出来的对象都在里面)
- JVM只有一个堆,被所有线程共享,是一个不连续的空间
方法区 (method area)
- 用来存放程序中的永远不变或唯一的内容(类信息,静态常量,字符串常量等)
- JVM只有一个方法区,被所有线程共享。且在堆中,所以实际上也是堆,只是存储的东西不一样
类代码信息
public class people {
String name;
int age;
void speak(){
System.out.println("hello word");
}
}
主类
public class Item {
public static void main(String[] args) {
final int MAX = 100;
people p1 = new people();
}
}
内存运行图



