使用步骤一、定义本地方法,通常情况下,应单独定义一个类来封装所有native方法/** 存放native方法的类 */public class MyNativeMethods { private static MyNativeMethods mEmployee; private MyNativeMe... ...
分类:
其他好文 时间:
2016-06-21 17:25:05
阅读次数:
135
今天分析第一个集合类:ArrayList首先,说一下我读这部分源码的感受。
ArrayList类底层实现实际上是数组,因此很多操作会调用很多本地(Native)方法来实现或者部分实现。用java实现的很多方法中,只是用java代码进行了一些必要的逻辑判断和变量值的改变。
在AbstractList中加入的modCount变量是为了配合迭代器的使用。
下面是部分源码分析:
package java.u...
分类:
其他好文 时间:
2016-06-21 06:52:53
阅读次数:
196
我们在java中调用Native code的时候,一般是通过JNI来实现的,我们只需要在java类中加载本地.so库文件,并声明native方法,然后在需要调用的地方调用即可,至于java中native方法的具体实现,全部交给了Native层。我们要在java中正确地调用到本地代码中对应函数的前提是 ...
分类:
其他好文 时间:
2016-06-03 21:05:23
阅读次数:
177
1、Java内存模型
Java虚拟机在执行程序时把它管理的内存分为若干数据区域,这些数据区域分布情况如下图所示:
程序计数器:一块较小内存区域,指向当前所执行的字节码。如果线程正在执行一个Java方法,这个计数器记录正在执行的虚拟机字节码指令的地址,如果执行的是Native方法,这个计算器值为空。
Java虚拟机栈:线程私有的,其生命周期和线程一致,每个方法执行时都会...
分类:
编程语言 时间:
2016-06-03 19:16:22
阅读次数:
227
在使用JNI的时候,你问的最多的问题莫过于 Java的数据类型和C/C++的数据类型怎么一对一映射。在我们的HelloWord例子当中,我们并没有传入任何参数给我们的java层print方法,native方法也并没有返回任何数据而是void,本地方法只是简单的打印一个字符串,然后就返回了。实际开发中我们都需要传入参数,返回参数,本章就会讨论如何从java层向底层传数据,以及如何从底层向java层返...
分类:
编程语言 时间:
2016-05-18 18:46:05
阅读次数:
223
Unsafe 简单讲一下这个类。Java无法直接访问底层操作系统,而是通过本地(native)方法来访问。不过尽管如此,JVM还是开了一个后门,JDK中有一个类Unsafe,它提供了硬件级别的原子操作。 这个类尽管里面的方法都是public的,但是开发者是无法使用它的,JDK API文档也没有提供关 ...
分类:
其他好文 时间:
2016-05-18 17:50:11
阅读次数:
179
程序计数器:一块较小的内存空间,它的作用可以看做是当前线程所执行的字节码的行号指示器,线程私有。如果线程正在执行的是一个java方法,这个计数器记录的是正在执行的虚拟机字节码的指令地址;如果正在执行的是native方法,这个计数器值为空(undefined)。此内存区域是唯一一个在java虚拟机规范 ...
分类:
其他好文 时间:
2016-05-18 12:42:17
阅读次数:
185
前言 之前一篇文章在写Native方法的时候,第一个步骤里面有这么一段代码 static { System.load("D:" + File.separator + "Hello.dll"); } static { System.load("D:" + File.separator + "Hello ...
分类:
其他好文 时间:
2016-05-18 12:37:24
阅读次数:
162
JNI 开始本篇的内容之前,首先要讲一下JNI。Java很好,使用的人很多、应用极 广,但是Java不是完美的。Java的不足体现在运行速度要比传统的C++慢上许多之外,还有Java无法直接访问到操作系统底层如硬件系统,为此 Java提供了JNI来实现对于底层的访问。JNI,Java Native ...
分类:
其他好文 时间:
2016-05-18 12:29:00
阅读次数:
202
运行时常量池是方法区的一部分,方法区用于存放Class的相关信息,如类名、访问修饰符、常量池、字段描述、方法描述等。 String.intern()是一个native方法,它的作用是:如果字符串常量池中已经包含了一个等于此String对象的字符串,则返回代表池中这个字符串的String对象;否则,将 ...
分类:
编程语言 时间:
2016-05-15 12:16:23
阅读次数:
164