【Java虚拟机——本地方法接口&执行引擎】

本地方法接口允许Java调用C/C++实现的底层方法,以处理与操作系统交互。native方法是无方法体、由C/C++实现的函数,如hashCode()和wait()。Java虚拟机中的执行引擎包含解释器和JIT编译器,前者边运行边解释字节码,后者在代码频繁执行时提高效率,两者结合提升性能。
摘要由CSDN通过智能技术生成

本地方法接口

连接Java方法与本地方法,使Java方法可以调用更为底层的本地方法

为什么需要调用更为底层的本地方法?

Java在与操作系统进行交互时权限不够,无法访问操作系统层面或者硬件层面上的信息,所以需要借助由C/C++语言实现的本地方法完成对操作系统的交互,因为C/C++语言相对于Java语言有直接与操作系统交互的权限。

什么是本地方法?

使用native关键字修饰的方法,该方法没有方法体,因为该方法具体的实现是借助C/C++语言完成的。native关键字不能与abstract关键字一起使用,abstract关键字表示方法的方法体没有被实现,但是native方法的方法体需要被实现,两者相互矛盾。

常见的native方法

hashCode()方法:获取对象的哈希值

getClass()方法:获取对象的Class对象

notify()方法:唤醒对象的一个等待的线程

notifyAll()方法:唤醒对象的所有等待的线程

wait(long timeout)方法:使当前对象的线程进入等待,并指定等待时间

执行引擎

Java虚拟机的核心,用于将字节码指令解释为对应操作系统的机器指令(二进制表示的计算机可以直接识别并执行的指令)

解释器和JIT编译器是什么?

解释器:Java虚拟机启动时运行,将字节码文件进行逐行翻译(边运行边翻译),变为计算机可以直接识别的机器指令。

JIT编译器(Just In Time Compiler):即时编译器,将字节码文件一次性直接编译为计算机可以识别的机器指令,并保存在计算机中,方便下一次对该字节码文件的使用。

JIT编译器什么时候被使用?

Java虚拟机会对被编译的代码进行检测,当发现某一段代码在一段时间内被执行的次数较多时,使用频率较高时,就会对该段代码进行JIT编译。

JIT编译器执行效率高为什么还要用解释器?

JIT解释器是在将翻译后的机器指令保存在计算机之后才效率高,如果所有的代码都采用JIT编译器,那么如果代码过多的情况下,当Java虚拟机启动时,由于需要将所有的代码先翻译一遍,所以花费时间可能过长,导致Java虚拟机执行效率降低,所以Java虚拟机通常采用解释器和JIT编译器相结合的方式对字节码文件进行翻译。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值