Java-虚拟机-执行引擎/解释器/编译
JVM中有两种解释器
1.C++字节码解释器:使用C++代码模拟JVM指令,例如iload,istore等
2.模板解释器(JIT编译器):将程序中固定不变的指令,或者常用的代码段,翻译成机器代码,保存到一个队列(StubQueue)中,执行的时候,直接执行汇编代码即可
固定不变:我们每天都遇到的NullPointException
,就会被翻译成机器代码,我们都知道,无论是我的程序,还是你的程序,这个NullPointException
都是相同的,所以不管三七二十一,直接翻译成机器代码即可
热点代码:我程序中的业务代码,和你程序中的业务代码是不同的,那么不同程序中的热点(常用)代码肯定也不相同,那么JVM如何区分出哪些业务代码是常用的代码呢?
执行引擎的4种运行模式
1.一次性解释模式(C++字节码解释器):类加载器将源码编译成jvm指令(iload,istore等),然后由模板解释器执行这些jvm指令并计算结果,缺点是效率低
2.编译模式(使用模板解释器/使用即时编译JIT编译器):将字节码指令翻译成机器码,并缓存起来,缺点是机器码占内存,因为很有可能1条jvm指令=10条机器指令
3.混合模式:由1和2的缺点综合考量,使用混合模式,正常情况下使用模板解释器执行jvm代码,对于一些常用的(热点)jvm代码段,则采用JIT编译器,将其机器码缓存到jvm内部(这也是hotspot虚拟机的本体)
4.本地方法执行Java字节码,很少见
Java-虚拟机-执行引擎/解释器/编译相关推荐
- Java虚拟机执行引擎多态的实现
在java中多态的表现为:重写(override)和重载(overload) 重载(overload 就是在同一个类中写多个方法名相同的方法)是java的静态分派: Java方法重载是根据传入参数的数 ...
- 【Java】实战Java虚拟机之五“开启JIT编译”
今天开始实战Java虚拟机之五"开启JIT编译" 总计有5个系列 实战Java虚拟机之一"堆溢出处理" 实战Java虚拟机之二"虚拟机的工作模式&qu ...
- Java 虚拟机执行子系统
JVM执行子系统的作用 在当前的Java中,编译器将源代码转成字节码后,字节码通过JVM的字节码执行引擎被执行,执行引擎负责具体的代码调用及执行过程.主要通过输入字节码文件,解析输入字节码,最后输出执 ...
- Android ART虚拟机执行引擎-Interpreter(八)
ART虚拟机是一个Interpreter+JIT+AOT的共存环境. ART虚拟机中解释器的实现源码在art/runtime/interpreter中,其中与平台相关的汇编代码保存在目录art/run ...
- 深入理解Java虚拟机(周志明第三版)- 第八章:虚拟机字节码执行引擎
系列文章目录 第一章: 走近Java 第二章: Java内存区域与内存溢出异常 第三章: Java垃圾收集器与内存分配策略 代码编译的结果从本地机器码转变为字节码,是存储格式发展的一小步,却是编程语言 ...
- 虚拟机字节码执行引擎
1 概述 执行引擎是Java虚拟机核心的组成部分之一."虚拟机"是一个相对于"物理机"的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处 ...
- 深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)读书笔记
前言 我在读 深入理解java虚拟机 这本书,把整体其中的关键点标记了,希望自己对它有个不一样的理解,也希望大家能看看这本写的很好的书 深入理解Java虚拟机:JVM高级特性与最佳实践(第3版) pd ...
- java 参数类型不确定_详细解析Java虚拟机的栈帧结构
什么是栈帧? 正如大家所了解的,Java虚拟机的内存区域被划分为程序计数器.虚拟机栈.本地方法栈.堆和方法区.(什么?你还不知道,赶紧去看看<Java虚拟机内存结构及编码实战>)这次要介绍 ...
- java虚拟机栈帧_Java虚拟机,运行时栈帧结构
业余生活要有意义,不要越轨.--华盛顿 引导语 "虚拟机"是一个相对于"物理机"的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器. ...
最新文章
- 中标麒麟7.0安装Unity、Qt等
- NDK其他build变量
- Gitlab禁用Gravatar头像
- FFMPEG音视频解码
- 如何用Postman做接口测试
- python 如何边改代码边调试_Python 代码调试神器:PySnooper
- php连接mysql开发环境_PHP开发环境搭建及常用的数据库操作
- 经验总结 | PyCharm 详细使用指南!
- linux中内存挂载到目录下
- x·dy+y²·sinx·dx=0
- Irrlicht例002--Quake3Map
- caffe 实践程序2——用细分的方法实现caffe中cifar100的识别
- java调用js tel,jQuery国际电话区号选择插件intlTelInput.js
- 你为什么要进入IT行业呢?
- 很全!国内外网络安全厂商有哪些?
- 街头篮球手游服务器维护,街头篮球手游2017.6.22维护更新公告 宝箱位置调整更新一览...
- 计算机组成原理一篇过
- 计算机启动慢,win7开机速度慢怎么办_win7开机启动慢怎么解决-win7之家
- 共享计算机添加打印机后无法打印机驱动,打印机无法打印原因?打印机设置共享的方法...
- 5G和车联网的本质联系
热门文章
- linux rsync 目录同步,Linux rsync网站目录同步功能的实现
- 使用静态容器防止并发修改同一对象
- android论文引用图片,Android自动解析html带图片,实现图文混排
- java托盘图标变白在linux,升级Ubuntu后系统托盘图标消失
- maven clean警告:The requested profile “pom.xml“ could not be activated because it does not exist
- apache-maven仓库配置
- Android开发笔记(十一)自定义视图的构造方法
- 对应猎豹网校的lua 视频教程 做的学习记录 前三课简单介绍1-3
- (三)Redis两种持久化方案
- php获取远程图片模拟post,file上传到指定服务器