JVM学习

01 JVM快速入门

        什么是JVM

JVM:Java Virtual Machine,Java虚拟机

JVM是JRE(Java Runtime Environment)的一部分,安装了JRE其实也就是相当于安装了JVM,可以运行Java程序了

JVM是运行在操作系统之上的,它与硬件没有直接的交互,依赖操作系统

        常见JVM

JCP组织(Java Community Process 开放的国际组织 ):Hotspot虚拟机(Open JDK版),sun2006年开源

Oracle:Hotspot虚拟机(Oracle JDK版),闭源,允许个人使用,商用收费

BEA:JRockit虚拟机

IBM:J9虚拟机

阿里巴巴:Dragonwell JDK(龙井虚拟机),电商物流金融等领域,高性能要求。

        结构图

JVM的作用:加载并执行Java字节码文件(.class)-加载字节码文件、分配内存(运行时数据区)、运行程序

JVM的特点:一次编译到处运行、自动内存管理、AQ、自动垃圾回收

总结:线程共享:方法区、堆;线程私有:虚拟机栈、本地方法栈、PC;

周边:

  • 类加载器子系统:将字节码文件(.class)加载到内存中的方法区

  • 本地方法接口:虚拟机使用到的native类型的方法,负责调用操作系统类库。(例如Thread类中有很多Native方法的调用)

  • 执行引擎:包含解释器、即时编译器和垃圾收集器 ,垃圾回收器、负责执行加载到JVM中的字节码指令。

        执行引擎Execution Engine

解释器:当Java字节码被加载到内存中时,解释器逐条解析和执行字节码指令。解释器逐条执行字节码,将每条指令转换为对应平台上的本地机器指令。由于解释器逐条解析执行,因此执行速度相对较慢。但解释器具有优点,即可立即执行字节码,无需等待编译过程。

即时编译器(JIT Compiler):为了提高执行速度,JVM还使用即时编译器。即时编译器将字节码动态地编译为本地机器码,以便直接在底层硬件上执行。即时编译器根据运行时的性能数据和优化技术,对经常执行的热点代码进行优化,从而提高程序的性能。即时编译器可以将经过优化的代码缓存起来,以便下次再次执行时直接使用。

        本地方法接口Native Interface

本地接口的作用是融合不同的编程语言为 Java 所用,于是就在内存中专门开辟了一块区域处理标记为native的代码,它的具体做法是 Native Method Stack中登记 native方法,在Execution Engine 执行时加载native libraies。

        Native Method Stack

本地方法栈存储了从Java代码中调用本地方法时所需的信息。是线程私有的。

        PC寄存器

每个线程都有一个程序计数器,是线程私有的,就是一个指针,指向方法区中的方法字节码(用来存储指向下一条指令的地址,即 将要执行的指令代码),由执行引擎读取下一条指令,是一个非常小的内存空间,几乎可以忽略不记。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值