JVM 执行引擎

概念

执行class文件中的指令,由解释器+编译器组成

补充------Java为什么是半编译半解释型语言

因为Java即有编译器也有解释器,可以用其中一种来运行。

程序执行步骤

解释器与编译器区别

编译器

概念

JIT(Just In Time Compiler)编译器,就是虚拟机将源代码直接编译成和本地机器平台相关的机器语言。

问题------为何有编译器还要有解释器

首先明确: 当程序启动后,解释器可以马上发挥作用,省去编译的时间,立即执行。 编译器要想发挥作用,把代码编译成本地代码,需要一定的执行时间。但编译为本地代码后,执行效率高。

所以: 尽管JRockit VM中程序的执行性能会非常高效,但程序在启动时必然需要花费更长的时间来进行编译。对于服务端应用来说,启动时间并非是关注重点,但对于那些看中启动时间的应用场景而言,或许就需要采用解释器与即时编译器并存的架构来换取一个平衡点。在此模式下,当Java虚拟器启动时,解释器可以首先发挥作用,而不必等待即时编译器全部编译完成后再执行,这样可以省去许多不必要的编译时间。随着时间的推移,编译器发挥作用,把越来越多的代码编译成本地代码,获得更高的执行效率。

使用场景

当一段代码一直被执行,执行次数超过规定的阈值,就会被判断为热点代码,那么JVM就是把这段代码进行编译,然后编译后的结果存储在方法区,以后用到这段代码就无需去解释运行了,直接使用编译后的结果即可

解释器

概念

  1. 当Java虚拟机启动时会根据预定义的规范对字节码采用逐行解释的方式执行,将每条字节码文件中的内容"翻译"为对应平台的本地机器指令执行

  2. 解释器真正意义上所承担的角色就是一个运行时"翻译者",将字节码文件中的内容"翻译"为对应平台的本地机器指令执行。

  3. 当一条字节码指令被解释执行完成后,接着再根据PC寄存器中记录的下一条需要被执行的字节码指令执行解释操作

特点

速度慢,比起编译技术,这种技术速度慢,但是响应速度快,因为编译需要编译完成才能运行,而解释器解释一句运行一句。

相关推荐
佛祖让我来巡山2 小时前
深入理解Java对象:从创建到内存访问的JVM底层机制
jvm·对象创建过程·对象是如何创建的
用手手打人3 小时前
JVM详解(一)--JVM和Java体系结构
jvm
王 富贵3 小时前
【JVM】故障诊断和性能监控命令
jvm
码熔burning10 小时前
JVM 对象创建的核心流程!
java·jvm
我是廖志伟12 小时前
JVM新生代Eden区域深度解析
java·jvm·memory management
花城飞猪15 小时前
Android系统框架知识系列(二十):专题延伸:JVM vs ART/Dalvik - Android运行时演进深度解析
android·jvm·dalvik
Mr.朱鹏15 小时前
ShardingJDBC实战指南
java·jvm·数据库·spring·分库分表·shardingjdbc·shardingshere
星梦清河16 小时前
宋红康 JVM 笔记 Day16|垃圾回收相关概念
java·jvm·笔记
哈基米喜欢哈哈哈1 天前
ThreadLocal 内存泄露风险解析
java·jvm·面试
星梦清河1 天前
宋红康 JVM 笔记 Day15|垃圾回收相关算法
jvm·笔记·算法