Java内存模型
线程共享数据区
数据共享区也是我们经常说的堆区
方法区
又叫静态区,所有线程共享,用于存储已经被虚拟机加载的类信息,常量,静态变量,即使编译后的代码数据等。-
堆(heap)
- 所有线程共享,用来存放Java对象实例,不存放基本类型和对象引用
- 堆又分为新生代和老年代
线程私有数据区
-
虚拟栈
虚拟栈生命周期与线程相同,启动一个线程,程序调用函数,栈帧 被压入栈中,函数调用结束,栈帧出栈。
栈桢组成:- 局部变量表
- 操作数栈
- 桢数据区
程序计数器
记录当前线程字节码的行号本地方法栈
与虚拟机栈相似,虚拟机栈记录的是Java方法服务,而本地方法记录的是Java中native方法(JNI)服务
更详细如下图