JNI操作JAVA中操作字段和方法的效率

native/java 比起 java/native 和 java/java 来的话,效率如何 呢?
这取决于 VM 的实现。

java/native 调用比 java/java 要慢,主要有以下几个原因:
1. java/native 比起 JVM 内部的 java/java 来说有一个调用转换过程,在把控
制权和入口切换给 地方法之前,VM 必须做一些额外的操作来创建参数和栈
帧。
2. 对 VM 来说,对方法调用进行内联比较容易,而内联 java/native 方法要难得
多。

VM 进行 java/native 调用时的消耗是 java/java 的 2~3 倍。当 然 VM 可以进行一些调整,使用 java/native 的消耗接近或者等于 java/java 的 消耗。

技术上来讲,native/java 调用和 java/native 是相似的。但实际上 native/java 调用很少见,VM 通常不会优化 native/java 这种回调方式。多数 VM 中, native/java 调用的消耗可以达到 java/java 调用的 10 倍。

使用 JNI 访问字段的花费取决于通过 JNIEnv 进行调用的消耗。以废弃一个对象 引用来说, 地代码必须依赖于特定的 JNI 函数才能做到,而这个依赖是必须的, 它把 地代码和 VM 中对象的内部形式很好地隔离开

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值