• JNI


    Java侧使用Native方法:

    1.加载对应的JNI库

    2.声明由native修饰的函数

    java 函数找到jni函数的方法

    1.静态注册:先通过函数名,找到后,保存函数指针

    2.动态注册,registerNativeMethods()(在JNI_ONLoad中动态注册)

    JNI层调用Java方法:

      通过JNIEnv调用callVoidMethoid方法

    JNIEvn

    虚拟机在JNI的代表,每个进程只有一个JNIEvn;与线程相关,线程间不能共享JNIEvn

    作用:调用Java函数,操作Java对象

    通过javaVM的attash... 和ditash...分别获取和释放JNIEnv结构体

    jfieldID,jmethodID分别取出java类的成员变量和方法

    垃圾回收

    (**将Java对象的指针赋值给jNI层,该指针的引用计数不会增加)

    JNI提供的三中类型引用:

    全局引用(不会被释放,需要主动释放),本地引用(JNI层函数返回,对象销毁(注意点:最好立即释放)),弱全局引用(使用之前调用)

    JNI中的异常处理

      发生异常后不会中断函数执行。

      提供三种方法处理异常:ExceptionOccured(判断是否有异常发生),ExceptionClear用来清除异常,ThrowNew(向java层抛出异常)

  • 相关阅读:
    SpringBoot启动配置原理
    SpringBoot和web开发
    SpringBoot和日志
    SpringBoot入门
    Docker仓库
    Docker Swarm
    Docker相关概念
    Docker服务编排
    Dockerfile
    Docker应用部署
  • 原文地址:https://www.cnblogs.com/jobs1/p/12053760.html
Copyright © 2020-2023  润新知