Java中将内存的控制交给JVM来实现,方便了JAVA程序猿,当然牺牲了一部分效率,不过总体来看是值得的。那么JVM中是如何设计GC的呢,本文从几个问题入手,然后分析了一下设计思路,如果有理解错误的地方,请批评指正!主要参考了《深入理解JAVA虚拟机》这本书,图是盗来的,图的内容和书上一样。 在JV ...
分类:
其他好文 时间:
2017-05-25 01:19:18
阅读次数:
270
题目 native关键字的作用是什么? 解答 首先,需了解JNI(Java Native Interface),它是连接Java平台与本地C代码的一个API。 其次,用native关键字声明的方法,是告诉JVM调用的方法是一个外部定义的方法,也就是本地C代码定义的一个方法。 总结来说,native关 ...
分类:
编程语言 时间:
2017-05-23 23:40:41
阅读次数:
195
一.访问静态字段 Java层的field和method,不管它是public,还是package、private和protected,从 JNI都可以访问到,Java面向语言的封装性不见了。 静态字段和非静态的字段访问方式不同,jni规范提供了一系列带static标示的访问静态字段的函数: 访问流程 ...
分类:
移动开发 时间:
2017-05-23 19:47:12
阅读次数:
299
一.数据类型映射概述 从我们开始jni编程起,就不可能避开函数的参数与返回值的问题。java语言的数据类型和c/c++有很多不同的地方,所以我们必须考虑当在java层调用c/c++函数时,怎么正确的把java的参数传给c/c++函数,怎么正确的从c/c++函数获取正确的函数返回值;反之,当我们在c/ ...
分类:
移动开发 时间:
2017-05-23 19:45:46
阅读次数:
360
一.JNI引用类型 JNI支持三种类型的 opaque reference:local references, global references,和weak global references,下面我们将逐一探讨。 local references 大部分JNI 函数都会创建LocalRef,如N ...
分类:
移动开发 时间:
2017-05-23 19:40:18
阅读次数:
262
在Java的编程中,我们经常会遇到各种的异常,也会处理各种的异常。处理异常在java中非常简单,我们通常会使用try-catch-finally来处理,也可以使用throw简单抛出一个异常。那么在jni编程的时候我们又是如何处理异常的呢? 异常处理流程 jni规范已经给我们做好了所有需要做的事情。回 ...
分类:
移动开发 时间:
2017-05-23 19:35:42
阅读次数:
282
1.生成动态库.so,存放于手机的system/lib/中(APP怎样将.so存入该文件夹,奇怪?????),Java层调用JNI的类会运行静态代码System.loadLibrary("***")将手机的system/lib文件夹中的动态库载入到VM。 2..so动态库里,C组件开发人员通过JNI ...
分类:
其他好文 时间:
2017-05-23 18:47:47
阅读次数:
120
一、Android.mk介绍 Android.mk是Android提供的一种makefile文件,用来指定诸如编译生成so库名、引用的头文件目录、需要编译的.c/.cpp文件和.a静态库文件等。要掌握jni,就必须熟练掌握Android.mk的语法规范。 它的基本格式如下: [cpp] view p ...
分类:
移动开发 时间:
2017-05-23 12:18:30
阅读次数:
223
工程创建完毕后,会自动生成cpp文件夹和CMakeList.txt文件 自动生成下面 生成的工程是c++写的,应该改成 c 的 修改完毕成为下面样子 ...
分类:
其他好文 时间:
2017-05-23 00:39:09
阅读次数:
163