当前位置:网站首页>JVM学习笔记:三 本地方法接口、执行引擎
JVM学习笔记:三 本地方法接口、执行引擎
2022-06-12 08:21:00 【lanleihhh】
JVM学习笔记:三 本地方法接口、执行引擎
本地方法接口

本地方法
- Java中的native修饰的方法
- native method 就是java调用非java代码的接口
- 本地方法都是操作系统提供的(由C或C++编写)
- 定义native方法,不提供实现,调用的是非Java代码实现
- native可以与除abstract之外的标识符连用
使用本地方法的好处
- Java可以与底层操作系统交互
有些任务使用Java不容易实现
不必关心实现细节,只要调用即可 - Java与硬件进行数据交互(
start(),read(),hashCode())
JVM的解释器用C实现,可以更好地与外部交互
jre大部分是Java实现,通过一些本地方法来和外界交互
例如java.lang.Thread的setPriority()方法是用 Java 实现的,但是它实现调用的事 该类里的本地方法setPriority0()

执行引擎
概述
执行引擎是JVM的核心组成部分之一

JVM将字节码装载到内存,字节码不是可执行的机器码,需要经过执行引擎将字节码解释/编译为对应平台上的机器指令。
执行引擎在JVM中扮演一个将高级语言翻译为机器语言的角色
- 前端编译:.java --> .class
- 后端编译:.class 解释/编译为机器码
执行引擎的机制
- 解释器
JVM启动时,根据预定义的规范对字节码逐行地解释执行,将字节码内容翻译为对应平台的机器码执行。 - JIT编译器
将字节码整体编译为机器码,但不立即执行
为什么Java是半解释半编译型语言?
JIT即时编译器是Java后来有的,原先就是解释执行
- 原来单纯的逐行解释字节码执行的效率低
- JIT将字节码翻译为机器码后,缓存到方法区的JIT代码缓存中,提升了执行效率
- 根据代码被执行的频率来决定是否启动JIT编译器将字节码直接编译为对应平台的机器码
JVM会针对使用频率较高的热点代码进行编译,缓存到方法区,执行效率高
JIT 编译器执行效率高为什么还需要解释器?
JIT编译器编译过程需要时间,但是执行效率高。
程序一启动,解释器马上响应,去解释执行。
将两者结合,JVM启动后,先通过解释器解释执行代码,之后使用编译器编译执行。采用解释器和即时编译器并存的架构来平衡。
边栏推荐
- Py&GO编程技巧篇:逻辑控制避免if else
- 离散 第一章
- DUF:Deep Video Super-Resolution Network Using Dynamic Upsampling Filters ...阅读笔记
- Vision transformer | arXiv 2205 - TRT vit vision transformer for tensorrt
- Gtest/gmock introduction and Practice
- MYSQL中的调用存储过程,变量的定义,
- Website colab and kaggle
- Ankerui fire emergency lighting and evacuation indication system
- vscode 下载慢解决办法
- C # hide the keyboard input on the console (the input content is not displayed on the window)
猜你喜欢

visual studio2019的asp.net项目添加日志功能

Hands on deep learning 18 -- model selection + over fitting and under fitting and code implementation

Scope of bean

Convolutional neural network CNN based cat dog battle picture classification (tf2.1 py3.6)

MES系统是什么?MES系统的操作流程是怎样?

(P25-P26)基于非范围的for循环、基于范围的for循环需要注意的3个细节

(P27-P32)可调用对象、可调用对象包装器、可调用对象绑定器

(p40-p41) transfer and forward perfect forwarding of move resources

Hands on deep learning -- weight decay and code implementation

Vscode的Katex问题:ParseError: KaTeX Parse Error: Can‘t Use Function ‘$‘ In Math Mode At Position ...
随机推荐
MES系统是什么?MES系统的操作流程是怎样?
(P27-P32)可调用对象、可调用对象包装器、可调用对象绑定器
Upgrade eigen to version 3.3.5 under Ubuntu 16.04
APS究竟是什么系统呢?看完文章你就知道了
Prediction of COVID-19 by RNN network
Call method and apply method
Derivation of Poisson distribution
(P19-P20)委托构造函数(代理构造函数)和继承构造函数(使用using)
Beidou satellite navigation system foundation part 1
Callback webrtc underlying logs to the application layer
(P15-P16)对模板右尖括号的优化、函数模板的默认模板参数
call方法和apply方法
js中的正则表达式
Vscode的Katex问题:ParseError: KaTeX Parse Error: Can‘t Use Function ‘$‘ In Math Mode At Position ...
记录谷粒商城踩坑(一)
802.11 protocol: wireless LAN protocol
Vins technical route and code explanation
ctfshow web 1-2
Group planning chapter I
Ankerui motor protector has the functions of overload inverse time limit, overload definite time limit, grounding, starting timeout, leakage, underload, phase failure, locked rotor, etc