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接口指针。

  • 相关阅读:
    == 和equals方法
    ObjectInputStream 与ObjectOutputStream
    IOS基础:ObjectiveC 数组处理
    学习笔记:自定义方法的两种实现方式
    DatePicker 获取时间的时区问题
    IOS基础:tableview中cell
    IOS基础:窗口切换的几种方法
    IOS基础:ObjectiveC 字符串处理
    使用 Notifications
    学习笔记:Tab Bar 控件使用详解
  • 原文地址:https://www.cnblogs.com/wzfyang/p/2651547.html
Copyright © 2011-2022 走看看