- 博客(8)
- 资源 (10)
- 收藏
- 关注
原创 【JNI编程】JNI中使用Linux本地线程
我们知道Android系统内核是使用Linux实现的,那么在Android OS中JNI实现的本地代码中实际使用的是Linux线程,这就需要pthread支持。一、涉及pthread方法Linux下用C开发多线程程序,Linux系统下的多线程遵循POSIX线程接口,称为pthread。头文件#include<pthread.h>1.1 pthread_createpthre...
2019-01-31 08:56:36 455
原创 【JNI编程】实现JNI的两种方法
通常来说我们使用JNI,Java层中对应的接口方法在本地代码中有对应的方法实现。一、通过动态链接器根据条目的名称解析通过动态链接器根据条目的名称解析条目。本地方法名称由以下组件连接而成:前缀Java_一个全限定类名下划线(" _ ")分隔符一个方法名对于重载的本地方法,两个下划线(“__”)后面跟着参数签名VM检查方法名与驻留在本地库中的方法是否匹配。VM首先查找短名称;即没有...
2019-01-31 08:55:41 869
原创 【JNI编程】深入理解JNI内存泄漏
JAVA 编程中的内存泄漏,从泄漏的内存位置角度可以分为两种:JVM 中 Java堆的内存泄漏和JVM 内存中 native memory 的内存泄漏。从操作系统角度看,JVM 在运行时和其它进程没有本质区别。在系统级别上,它们具有同样的调度机制,同样的内存分配方式,同样的内存格局。JVM 进程空间中,Java Heap 以外的内存空间称为 JVM 的 native memory。进程的很多资...
2019-01-30 09:09:27 1559 1
原创 【JNI编程】调用API
Invocation API允许软件供应商将JVM加载到任意本地应用程序中。供应商可以提供支持Java的应用程序,而无需链接JVM源代码。本章首先概述了Invocation API。接下来是所有Invocation API函数的参考页面。一、概述以下代码示例说明了如何在Invocation API中使用函数。在此示例中,C++代码创建JVM并调用静态方法,称为Main.test。为清楚起见,...
2019-01-30 09:07:32 513
原创 【JNI编程】JNI函数
本节作为JNI函数的参考部分。它提供了所有JNI功能的完整列表,还提供了JNI函数表的确切布局。请注意使用术语“必须”来描述对JNI程序员的限制。 例如,当您看到某个JNI函数必须接收非NULL对象时,您有责任确保不将NULL传递给该JNI函数。 因此,JNI实现不需要在该JNI函数中执行NULL指针检查。本节的一部分改编自Netscape的JRI文档。参考材料按其用法分组。参考部分由以下功...
2019-01-27 09:48:32 2028
原创 【JNI编程】JNI类型和数据结构
本节主要讨论JNI如何将Java类型映射到本地C类型。一、原始类型下表描述了Java基本类型及其依赖于机器的本地对等类型。Java类型本地类型描述booleanjbooleanunsigned 8 bitsbytejbytesigned 8 bitscharjcharunsigned 16 bitsshortjshortsigned 1...
2019-01-26 09:22:28 456
原创 【JNI编程】JNI中的主要设计
这里主要讨论JNI中的主要设计问题。本节中的大多数设计问题都与本地方法有关。一、JNI接口函数和指针本地代码通过调用JNI函数访问JVM特性。JNI函数通过接口指针可用。接口指针是指向指针的指针。这个指针指向一个指针数组,每个指针指向一个接口函数。每个接口函数在数组中都有一个预定义的偏移量。图2-1演示了接口指针的组织。JNI接口的组织方式类似于C++虚拟函数表或COM接口。使用接口表而不...
2019-01-25 17:02:29 348
原创 【JNI编程】启动篇
JNI是一个本地编程接口。它允许在Java虚拟机(VM)中运行的Java代码与用其他编程语言(如C、C++和汇编)编写的应用程序和库进行互操作。JNI最重要的优点是它不限制底层JVM的实现。因此,JVM供应商可以添加对JNI的支持,而不会影响JVM的其他部分。程序员可以编写本地应用程序或库的一个版本,并期望它与支持JNI的所有JVM一起工作。一、JNI综述虽然可以完全使用Java编写应用程序...
2019-01-25 16:59:31 301
Android发送邮件功能实现
2015-08-16
高仿今日头条字体渐变指示器
2015-04-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人