java虚拟机在执行java程序时会把管理的内存区域划为多个不同的数据区域。包括方法区、虚拟机栈、本地方法栈 、堆、程序计数器。
虚拟机栈:线程私有,生命周期与线程相同,虚拟机栈描述的是java方法执行的内存模型:每个方法在执行的时候都会创建一个栈帧用于存储局部变量表、操作数栈、动态链接、方法出口等,每个方法从调用到执行完成,就对应一个栈帧在栈中入栈到出栈的过程。
java堆:java虚拟机管理的内存区域最大的一块,java堆是被所有线程共享的一块区域,在虚拟机启动时创建。java堆用来存放对象实例,几乎所有对象实例都在这分配内存。
方法区:线程共享,用于存储已被虚拟机加载的类信息、常量、静态变量等数据