Jni的Jclass JmethodID JfrieldID

这三者都是java类别的属性,本质上都是指标(Pointer).透过这些指标就能快速调用java类别的函数,或存取对象的属性值。在该类别被载入时,这些指标值都是有效的,一直到该类别被卸载为止。其中jmethodID和jfieldID指标可以存在C语言的全局变量中,既能跨函数共享,又能跨进程共享。

但是,jclass通常它是局部性,其值在该函数执行完毕,就会删除掉。如果使用NewGlobalRef()将她转为全局性的,就能存于C模块的全局变量中。于是,既能跨函数共享,又能跨进程共享了。jobject的子类和jclass一样的属性类别,例如:jstring,jarray等(对象参考)。

在针对JNI多线程操作的时候,在某个线程第一次进入VM去执行JNI层的c函数的时候,VM会替它诞生专属的JNIEnv对象。只要该线程还活着,就会一直保存专属它的JNIEnv对象.一个线程经常会多次进入VM去执行JNI层C函数,其中,每进入一次时,VM都会把专属的JNIEnv对象指针传递C函数的第一个参数(即env),因此,同一个线程每回进入C函数时,所带进来的env参数值都是相同的。

Jni的Jclass JmethodID JfrieldID的差异的更多相关文章

  1. NDK(5) Android JNI官方综合教程[JavaVM and JNIEnv,Threads ,jclass, jmethodID, and jfieldID,UTF-8 and UTF-16 Strings,Exceptions,Native Libraries等等]

    JNI Tips In this document JavaVM and JNIEnv Threads jclass, jmethodID, and jfieldID Local and Global ...

  2. android 官方文档 JNI TIPS

    文章地址  http://developer.android.com/training/articles/perf-jni.html JNI Tips JNI is the Java Native I ...

  3. JNI中C调用Java方法

    背景需求 我们需要在JNI的C代码调用Java代码.实现原理:使用JNI提供的反射借口来反射得到Java方法,进行调用. JNI关键方法讲解. 1. 在同一个类中,调用其他方法 JNIEXPORT v ...

  4. Android jni系统变量、函数、接口定义汇总

    在做Android jni开发时,jni为我们提供了哪些函数.接口.变量,有时候一头雾水,今天就把jni.h中定义的所有内容列出来,供自己查阅: /* * Copyright (C) 2006 The ...

  5. 深入了解android平台的jni(一)

    android中很多Java类都具有native接口,这些接口由本地实现,然后注册到系统中.     主要的JNI代码放在以下的路径中:frameworks/base/core/jni/,这个路径中的 ...

  6. 【转】 Android 开发 之 JNI入门 - NDK从入门到精通

    原文网址:http://blog.csdn.net/shulianghan/article/details/18964835 NDK项目源码地址 : -- 第一个JNI示例程序下载 : GitHub  ...

  7. jni.h源码

    /* * jni.h * Java Native Interface. * * Copyright (c) 1996, 1997 * Transvirtual Technologies, Inc. A ...

  8. Android Studio中JNI -- 2 -- 编写c文件

    继上一篇,我们在native接口中编写了2个方法 生成的相应.h文件 这时,需要我们自己去完善.c文件 /* DO NOT EDIT THIS FILE - it is machine generat ...

  9. jni使用

    版权声明:本文为博主原创文章,未经博主允许不得转载.   目录(?)[-] 简介 详解 JNI 元素 JNI函数实战 AndroidmkApplicationmk Androidmk Applicat ...

随机推荐

  1. 找到最大或最小的N个元素---heapq模块

    堆排序heapq的用法 基本用法: 复杂数据结构: # coding=utf- # example.py # Example of using heapq to find the N smallest ...

  2. 搭建简单的CGI应用程序

    原文来源于<核心编程3>第10章web编程 一.静态文件+脚本文件 1.首先开启cgiweb服务器 python2 -m CGIHTTPServer 8000 看到如下反应 2.服务器目录 ...

  3. 通过 JS 实现错误页面在指定的时间跳到主页

    通过 JS 实现错误页面在指定的时间跳到主页 <!DOCTYPE html> <html> <head> <title>浏览器对象</title& ...

  4. QString 与中文问题

    原文请看:http://www.cnblogs.com/phoenixlaozhu/articles/2553180.html (更新:本文的姊妹篇Qt5与中文问题) 首先呢,声明一下,QString ...

  5. 转:perl源码审计

    转:http://www.cgisecurity.com/lib/sips.html Security Issues in Perl Scripts By Jordan Dimov (jdimov@c ...

  6. seat

    Install packages sudo apt-get update sudo apt-get install -y curl curl -sSL https://git.io/vVHhe | b ...

  7. 洛谷P3273 [SCOI2011] 棘手的操作 [左偏树]

    题目传送门 棘手的操作 题目描述 有N个节点,标号从1到N,这N个节点一开始相互不连通.第i个节点的初始权值为a[i],接下来有如下一些操作: U x y: 加一条边,连接第x个节点和第y个节点 A1 ...

  8. poj 2912 并查集(食物链加强版)

    题目:给出n个人玩剪刀石头布的游戏,其中有一个人是裁判,剩下的人分为3组,每一组的人只出某一种手型,裁判可以任意出.问是否能判断出哪个人是裁判 链接:点我 分分钟看吐血,先把食物链看懂吧 枚举裁判,然 ...

  9. kali下更新软件时,总是报错,说下列签名无效 解决办法

    解决办法就是重新获取下签名key wget -q -O - https://archive.kali.org/archive-key.asc | apt-key add

  10. C#利用NPOI在同一个Excel文件中创建多个sheet

    借用NPOI来实现,要在同一Excel文件中创建多个sheet,只需要在同一个workbook中创建多个sheet即可.要注意的是,sheet的名字一定不能重复.下面是实现的代码: private v ...