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

xiaoxiao2021-02-28  58

JVM的启动流程:

JVM的基本结构:

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

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

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

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

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

转载请注明原文地址: https://www.6miu.com/read-42733.html

最新回复(0)