zoukankan      html  css  js  c++  java
  • 【JNI知识一】JNI接口函数与指针

    本地代码通过调用JNI函数来访问Java VM功能。JNI函数都可以使用一个接口指针来调用。接口指针是一个指向指针的指针。该指针指向一个指针数组,其中的每个指针元素都指向一个接口函数。每一个接口函数都是在接口数组中一个预定义的偏移量位置。下图说明了一个接口指针的组织机构。

    接口指针组织图

    JNI接口的组织类似于一个C++虚函数表或COM接口。相比于使用硬连接函数,使用接口表的优点是JNI命名空间是独立于本地代码的。虚拟机可以很容易地提供多个版本的JNI函数表。例如,虚拟机可以支持两个JNI函数表:

    1.one performs thorough illegal argument checks, and is suitable for debugging;

    2.the other performs the minimal amount of checking required by the JNI specification, and is therefore more efficient.

    JNI接口指针只在当前线程中有效。因此,一个本地方法不能将接口指针从一个线程传递到另一个线程中。执行JNI的虚拟机可以在接口指针指向的区域分配并存储线程本地数据。

    本地方法以参数的方式接收JNI接口指针。当VM从一个Java线程中多次调用本地方法时会向本地方法传递相同的接口指针。当然,一个本地方法可以被不同的Java线程调用,因此可能会收到不同的JNI接口指针。

  • 相关阅读:
    外观模式
    享元模式
    装饰模式
    适配器模式
    组合模式
    典型用户模板与场景
    知识圈APP开发记录(十二)
    知识圈APP开发记录(十一)
    知识圈APP开发记录(十)
    周总结(七)
  • 原文地址:https://www.cnblogs.com/wzfyang/p/2651547.html
Copyright © 2011-2022 走看看