2012年12月22日

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

摘要: 后面有介绍如何缓存ID 来提高效率后,那我们可能会对使用 JNI访问java字段和方法的效率不太明白,native/java 比起java/native和java/java来的话,效率如何呢? 当然,这取决于VM 的实现。我们不能给出在大范围的 VM上通用的数据,但我们可以通过分析本地方法回调 java方法和JNI 操作字段以及方法的过程来给出一个大致的概念。 我们从比较java/native 和java/java的效率开始。java/native调用比java/java要慢,主要有以下几个原因: 1、java/native比起 JVM内部的java/java 来说有一个调用转换过程,在把控制 阅读全文

posted @ 2012-12-22 14:11 Cynthia&Sky 阅读(1835) 评论(0) 推荐(0) 编辑

缓存字段ID和方法ID

摘要: 获取字段ID和方法ID时,需要用字段、方法的名字和描述符进行一个检索。检索过程相对比较费时,因此本节讨论用缓存技术来减少这个过程带来的消耗。缓存字段ID和方法ID的方法主要有两种。两种区别主要在于缓存发生的时刻,是在字段ID和方法ID被使用的时候,还是定义字段和方法的类静态初始化的时候。 也就是使用时缓存 还是 类的静态初始化过程中缓存字段和方法ID 使用时缓存 字段ID和方法ID可以在字段的值被访问或者方法被回调的时候缓存起来。下面的代码中把字段ID存储在静态变量当中,这样当本地方法被重复调用时,不必重新搜索字段ID:JNIEXPORT void JNICALL Java_Instance. 阅读全文

posted @ 2012-12-22 14:07 Cynthia&Sky 阅读(1205) 评论(0) 推荐(0) 编辑

调用JAVA方法

摘要: 实例方法的调用JNI 支持一系列完整的函数让你可以在本地代码中回调 JAVA 方法,下面例子演示了如何从本地代码中调用一个JAVA 中的实例方法:class InstanceMethodCall { private native void nativeMethod(); private void callback() { System.out.println("In Java"); } public static void main(String args[]) { InstanceMethodCall c = new... 阅读全文

posted @ 2012-12-22 13:52 Cynthia&Sky 阅读(3016) 评论(0) 推荐(0) 编辑

访问JAVA中的字段(jfieldID)

摘要: JAVA 支持两种 field(字段),每一个对象的实例都有一个对象字段的复制;所有的对象共享一个类的静态字段。访问对象字段:先看一个从本地代码中访问对象字段的例子: class InstanceFieldAccess { private String s; private native void accessField(); public static void main(String args[]) { InstanceFieldAccess c = new InstanceFieldAccess(); c.s = "a... 阅读全文

posted @ 2012-12-22 13:37 Cynthia&Sky 阅读(10111) 评论(0) 推荐(0) 编辑

访问数组(JNI)

摘要: JNI在处理基本类型数组和对象数组上面是不同的。对象数组里面是一些指向对象实例或者其它数组的引用。基本类型数组:获取数组元素指针的对应关系: 函数 数组类型 GetBooleanArrayElements boolean GetByteArrayElements byte GetCharArrayElements char GetShortArrayElements short GetIntArrayElements int GetLongArrayElements long GetFloatArrayElemen... 阅读全文

posted @ 2012-12-22 11:26 Cynthia&Sky 阅读(16703) 评论(0) 推荐(0) 编辑

字符串(JNI)

摘要: 从java程序中传过去的String对象在本地方法中对应的是jstring类型,jstring类型和c中的char*不同,所以如果你直接当做char*使用的话,就会出错。因此在使用之前需要将jstring转换成为c/c++中的char*,这里使用JNIEnv的方法转换.下面是访问String的一些方法:GetStringUTFChars将jstring转换成为UTF-8格式的char*GetStringChars将jstring转换成为Unicode格式的char*ReleaseStringUTFChars释放指向UTF-8格式的char*的指针ReleaseStringChars释放指向Un 阅读全文

posted @ 2012-12-22 10:57 Cynthia&Sky 阅读(19368) 评论(0) 推荐(0) 编辑

JNI本地接口相关参数说明(JNIEnv)

该文被密码保护。 阅读全文

posted @ 2012-12-22 10:42 Cynthia&Sky 阅读(13) 评论(0) 推荐(0) 编辑

jni学习相关

该文被密码保护。 阅读全文

posted @ 2012-12-22 10:07 Cynthia&Sky 阅读(12) 评论(0) 推荐(0) 编辑

2012年12月20日

JNI中的日志输出(打印)

该文被密码保护。 阅读全文

posted @ 2012-12-20 20:58 Cynthia&Sky 阅读(12) 评论(0) 推荐(0) 编辑

Android JNI知识简介

该文被密码保护。 阅读全文

posted @ 2012-12-20 19:54 Cynthia&Sky 阅读(16) 评论(0) 推荐(0) 编辑

导航