【JVM】JVM进阶之JVM运行机制

来源:互联网 发布:mac照片导入iphone 编辑:程序博客网 时间:2024/05/22 03:22

JVM的启动流程:
这里写图片描述

JVM的基本结构:
这里写图片描述

PC寄存器:
§每个线程拥有一个PC寄存器,(每个线程起来的时候都会创建一个PC寄存器)
- PC寄存器总是会指向下一条指令的地址(这样程序在执行过程中,就知道下一步需要做什么)
- 在执行本地方法的时候,PC寄存器的值就是未定义的
§ 在每个线程创建时创建
§ 指向下一条指令的地址

方法区:(方法区是用来保存类的源信息的,对类进行描述)
§ 保存装载的类信息:
- 类型的常量池
- 字段、方法信息
- 方法字节码
§ 通常和永久区(Perm)关联在一起,永久区保存一些相对静止的数据

Java堆:
通过new出来的对象基本上都是保存在Java堆中的,堆是全局共享的,所有线程都共享Java堆(也就是你分配了一个对象,所有线程都是共享的),Java堆的结构和GC算法是有关系的,不同的GC方式就需要不同的堆
§ 和程序开发密切相关
§ 应用系统对象都保存在Java堆中
§ 所有线程共享Java堆
§ 对分代GC来说,堆也是分代的
§ GC的主要工作区间

Java栈:
§ 线程私有
§ 栈由一系列帧组成(因此Java栈也叫帧栈)
§ 帧保存一个方法的局部变量、操作数栈、常量池指针
§ 每一次方法调用创建一个帧,并压栈

对比:栈、堆、方法区对比:
- 类的实例以及对象本身存在于堆中,而对象的引用存在于栈中。
- 类信息的描述包括类方法的实际的字节码是不在堆当中的,是在方法区中的。
- 栈会指向堆,堆的一些信息会去方法区存储和读取
这里写图片描述

原创粉丝点击