JVM虚拟机组成
- 类装载子系统
- 运行时数据区(内存模型)
- 字节码执行引擎
运行时数据区(内存模型)
- 堆:一般我们new出来的对象都是放在堆里(有时也可以放栈里)
- 栈:每个线程都有自己的栈内存空间,存放局部变量
-
- 每个方法都对应一块自己的栈帧内存区域
-
-
- 局部变量表:存放局部变量(如果是对象的话则是指向对象的指针)
- 操作数栈:程序运行时,需要操作的数据用来中转的一块内存区域
- 动态链接:方法对应的内存位置
- 方法出口:回到调用方法的方法的位置
-
- 程序计数器:存放马上运行的那行代码的内存位置,每执行完一行代码,字节码执行引擎会修改程序计数器的值
- 方法区(永久代,元空间):运行时常量池,使用直接内存
-
- 常量