UnSafe类中的一些重要方法 JDK中的rt.jar保重Unsafe类中提供了硬件级别的原子性操作,Unsafe类中的方法都是navtice方法,他们使用JNI的方式访问C++实现库,下面我们来了解一下Unsafe提供的几个主要方法以及编程时如何使用Unsafe类做一些事情。 方法;返回指定变量所 ...
分类:
其他好文 时间:
2019-04-28 20:52:21
阅读次数:
201
CAS(Compare-and-Swap),即比较并替换,java并发包中许多Atomic的类的底层原理都是CAS。 它的功能是判断内存中某个地址的值是否为预期值,如果是就改变成新值,整个过程具有原子性。 具体体现于sun.misc.Unsafe类中的native方法,调用这些native方法,JV ...
分类:
其他好文 时间:
2019-04-23 23:50:13
阅读次数:
310
一,前言 回想之前写过的程序,数据都是在内存中,一旦程序运行结束,这些数据都没有了,等下次再想使用这些数据,可是已经没有了。那怎么办呢?能不能把运算完的数据都保存下来,下次程序启动的时候,再把这些数据读出来继续使用呢?其实要把数据持久化存储,就需要把内存中的数据存储到内存以外的其他持久化设备(硬盘、 ...
分类:
编程语言 时间:
2019-04-09 20:54:50
阅读次数:
207
1、集合 ArrayList,基于数组Object[] elementData实现,因为是连续内存,所以使用native方法System.arraycopy执行扩容操作,1.5倍扩容 迭代器模式,定义Iterable接口表示“可迭代”,Collection extends Iterable,List ...
分类:
编程语言 时间:
2019-04-09 20:35:51
阅读次数:
167
由于运行时常量池属于方法区的一部分,因此两个区域放在一块执行。 String.intern()是一个Native方法,它的作用是如果字符串常量池中已经包含了此String对象的字符串,则返回代表池中这个字符串的String对象;否则将此String对象包含的字符串添加到常量池中,并且返回此Strin ...
分类:
其他好文 时间:
2019-03-29 00:46:45
阅读次数:
208
相对于NDK来说SDK里面有更多API可以调用,有时候我们在做NDK开发的时候,需要在JNI直接Java中的方法和变量,比如callback,系统信息等.... 如何在JNI中调用Java方法呢?就需要先了解FindClass和GetMethodID了。 FindClass和GetMethodID ...
分类:
移动开发 时间:
2019-03-27 17:03:18
阅读次数:
197
本文学习如何在C代码中创建Java对象和对象数组,前面我们学习了C代码中访问Java对象的属性和方法,其实在创建对象时本质上也就是调用构造函数,因此本文知识学习起来也很轻松。有了前面学习数组创建的方法后,C代码创建对象数组同样很容易,下面开始学习吧~ 1. C代码创建Java对象 创建Java对象本 ...
分类:
编程语言 时间:
2019-03-27 16:59:44
阅读次数:
208
从C/C++层调用JAVA层代码步骤: 1. 在JAVA类中创建java方法和本地方法 2.在JNI文件夹下创建类对应的.h文件(可通过JAVAH命令生成该类的.h文件,就不赘述了),创建.cpp文件(用于编写C/C++层的代码) .h文件: .cpp文件 3.调用JAVA方法需要类的对象 在C/C ...
分类:
移动开发 时间:
2019-03-27 11:14:48
阅读次数:
191
利用Android NDK编译动态库,在C文件中调用了两个JNI函数:JNI_GetDefaultJavaVMInitArgs和JNI_CreateJavaVM。编译的时候始终报以下错误: 看了网上很多人的解答,基本都是添加libjvm.so或者libnativehelper库。尝试下,没有一个靠普 ...
分类:
移动开发 时间:
2019-03-27 11:11:12
阅读次数:
223
除了前面说的自定义JNI函数之外,JNI还提供了两个特殊函数,它们是JNI_OnLoad()和JNI_OnUnload(),分别在加载库和卸载库的时候调用。 1、JNI_OnLoad() Java调用System.loadLibrary()加载一个库的时候,会首先在库中搜索JNI_OnLoad()函 ...
分类:
其他好文 时间:
2019-03-27 10:56:57
阅读次数:
130