一、Accessing Static Fields(访问静态域) 1. GetStaticFieldID 返回类的静态域的域 ID。域由其名称和签名指定。GetStatic<type>Field 和 SetStatic<type>Field 访问器函数系列使用域 ID 检索静态域。 GetStati ...
分类:
移动开发 时间:
2018-11-20 00:04:37
阅读次数:
385
https://yq.aliyun.com/articles/5401?spm=a2c4e.11153940.blogcont5402.21.429a25b2u7f5gK https://yq.aliyun.com/articles/5400?spm=a2c4e.11153940.blogcont5 ...
分类:
移动开发 时间:
2018-11-19 22:39:33
阅读次数:
584
一、AllocObject 分配新 Java 对象而不调用该对象的任何构造函数。返回该对象的引用。 clazz 参数务必不要引用数组类。 参数: env:JNI 接口指针。 clazz:Java 类对象。 返回值: 返回 Java 对象。如果无法构造该对象,则返回NULL。 抛出: Instanti ...
分类:
移动开发 时间:
2018-11-19 22:11:40
阅读次数:
243
1.判断对象是否已死的方法可达性分析可作为GCRoots的对象包括下面几种:虚拟机栈(栈帧中的本地变量表)中引用的对象。方法区中类静态属性引用的对象。方法区中常量引用的对象。本地方法栈中JNI(即一般说的Native方法)引用的对象。2.垃圾收集算法:标记-清除(MarkSweep)算法:分标记和清除两个阶段,缺点:一是两个阶段效率低,二是产生内存碎片。复制(Copying)算法:把内存平均分为两
分类:
编程语言 时间:
2018-11-19 21:39:48
阅读次数:
210
1.程序计数器--线程私有,生命周期与线程一致(执行java方法时,则是虚拟机字节码指令的地址,定长。若是native方法,则为空,所以这个内存不存在outOfMemeryError,也没有规定) 每个线程都会拥有(因为多线程执行,上下文切换,需要保留当前线程执行状态),,记录当前线程执行的代码(字 ...
分类:
编程语言 时间:
2018-11-19 17:23:04
阅读次数:
100
阅读本文章前需要了解 CAS 操作是什么。 首先大致介绍一下需要讲到的几个类,只需要理解这几个类是什么关系即可,后面会有详细解析。 Unsafe :这个类提供了 native 方法,未开源,提供了线程阻塞和唤醒,原子操作等方法。 LockSupport :包装了一层 Unsafe 类,非常类似于代理 ...
分类:
编程语言 时间:
2018-11-16 23:36:33
阅读次数:
259
一、Unsafe Java无法直接访问底层操作系统,而是通过本地(native)方法来访问。不过尽管如此,JVM还是开了一个后门,JDK中有一个类Unsafe,它提供了硬件级别的原子操作。 这个类尽管里面的方法都是public的,但是并没有办法使用它们,JDK API文档也没有提供任何关于这个类的方 ...
分类:
编程语言 时间:
2018-11-16 17:41:59
阅读次数:
224
效果图: 1.获取本地音乐 2.播放音乐 MediaPlayer 音乐播放类 MediaPlayer其实是一个封装的很好的音频、视频流媒体操作类,如果查看其源码,会发现其内部是调用的native方法,所以它其实是有C++实现的。 既然是一个流媒体操作类,那么必然涉及到,播放、暂停、停止等操作,实际上 ...
分类:
移动开发 时间:
2018-11-16 14:00:58
阅读次数:
252
1. NewGlobalRef(创建全局引用) 创建 obj 参数所引用对象的新全局引用。obj 参数既可以是全局引用,也可以是局部引用。全局引用通过调用 DeleteGlobalRef() 来显式撤消。 参数: env:JNI 接口指针。 obj:全局或局部引用。 返回值: 返回全局引用。如果系统 ...
分类:
移动开发 时间:
2018-11-15 22:31:59
阅读次数:
189
1、入门概念 SWIG支持将C/C++接口封装成其他语言形式,我这里需要转换成JNI (Java)接口。 首先请参考:SWIG官方文档 2、编译命令 这里面参数含义依次为: 目前文件test.i是SWIG的配置文件,其内容大致是这样的: ...
分类:
其他好文 时间:
2018-11-14 16:40:07
阅读次数:
542