JVM内存模型五个点:
- 程序计数器:
作用:为记录下一条要运行的指令
特点:每个线程私有内存中都对应着 一个绝对独立的计数器。
- java虚拟机栈
作用:保存有 局部变量( boolean,byte,short,char,int,long, float,double)、正在执行的每个方法;
特点:线程私有,即使两个线程在执行完全相同的代码,仍然无法共享他们的局部变量,只能**“自己玩自己的”**
- 本地方法栈:与前两者共同构成线程堆栈(ThreadStack)
作用:用于管理本地方法的调用
特点:线程私有,占用空间大小远远小于堆
- JAVA堆
作用:存储由Java应用程序中创建的所有对象对象本身和数组
特点:线程共享,线程不安全的;JVM 所管理的内存中最大的一块区域
- 方法区:与JAVA堆组成堆区(heap)
作用:存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。
特点:线程共享;
-
JVM内存模型图解