JVM架构图
PC寄存器
- 每个线程拥有一个PC寄存器
- 在线程创建时创建
- 指向下一条指令的地址
- 执行本地方法时,PC的值为undefined
方法区
- 保存装载的类信息(类型的常量池,字段和方法信息,方法字节码)
- JDK6时,String等常量信息置于方法区
- JDK7时,String等常量信息置于java堆
- 通常和永久区(Perm)关联在一起
Java堆
- 和程序运行密切相关
- 应用系统对象都保存在java堆中
- 所有线程共享java堆
- 对分代GC来说,堆也是分代的
- 堆被划分成两个不同的区域:新生代 ( Young )、老年代 ( Old )。
- 新生代 ( Young ) 又被划分为三个区域:Eden、From Survivor、To Survivor。
Java栈
- 线程私有,每个线程都有独立的栈空间
- 栈由一系列帧组成,通常只有几百K
- 一个帧保存一个方法的局部变量,操作数栈,常量池指针
- 每一个方法调用创建一个帧,因此决定了函数调用的深度