本文有2个模块 :
A 构建JNI环境
*写JAVA本地方法
public static native int sum(int a,int b);
*新增jni文件夹 写JNI粘合层 利用javah反编译出.h文件,复制.h至jni文件夹
javah -jni packagename.classname
/* DO NOT EDIT THIS FILE - it is mach...
分类:
其他好文 时间:
2015-04-13 18:58:41
阅读次数:
106
java虚拟机所管理的内存包括以下几个运行时数据区域,如图所示:
既:程序计数器,Java虚拟机栈,本地方法栈,Java堆和方法区。
程序计数器是一块较小的内存空间,他可以看作是当前线程执行的字节码的行号指示器。
由于java虚拟机的多线程是通过线程轮流切换并分配处理器执行时间的方式来实现的,在任何一个确定的时间,一个处理器(对于多核处理器来说是一个内核)都只会执行一个线程中的指令。因此...
分类:
编程语言 时间:
2015-04-12 21:08:15
阅读次数:
185
Java的内存分配A:栈 存储局部变量 B:堆 存储所有new出来的 C:方法区(面向对象部分详细讲解) D:本地方法区(系统相关) E:寄存器(CPU使用) 注意: a:局部变量 在方法定义中或者方法声明上定义的变量。 b:栈内存和堆内存的区别 栈:数据使用完毕,就消失...
分类:
编程语言 时间:
2015-04-10 22:23:31
阅读次数:
146
一、JVM内存的构Java虚拟机会将内存分为几个不同的管理区,这些区域各自有各自的用途,根据不同的特点,承担不同的任务以及在垃圾回收时运用不同的算法。总体分为下面几个部分:程序计数器(Program Counter Register)、JVM虚拟机栈(JVM Stacks)、本地方法栈(Native...
分类:
其他好文 时间:
2015-04-07 22:55:29
阅读次数:
159
在上一篇博文中,我们搭建好了Android ndk 的开发环境,作为码农,我们是不是先来写一个HelloWorld来表示一下自己的到来。
(1)首先在你的工作空间建一个Android项目,这里我建立的为NDKHelloWorld。项目结构如图(1)
、
图(1)
(2)在MainActivity中声明你所需要的本地方法,MainActivity的代码如下所示:
package com...
分类:
移动开发 时间:
2015-04-06 23:21:56
阅读次数:
358
JVM内存组成结构JVM由堆、栈、本地方法栈、方法区等部分组成,结构图如下所示:1)堆所有通过new创建的对象的内存都在堆中分配,其大小可以通过-Xmx和-Xms来控制。堆被划分为新生代和旧生代,新生代又被进一步划分为Eden和Survivor区,最后Survivor由From Space和To S...
分类:
其他好文 时间:
2015-04-02 15:04:37
阅读次数:
119
概述程序计数器,本地方法栈,虚拟机栈随线程而生,随线程而灭. Java堆和方法区则不一样,这部分内存分配和回收的都是动态的,垃圾收集器所关注的是这部分内存.判断对象是否是垃圾的算法JVM没有选用引用计数算法来管理内存,最主要的是引用计数很难解决对象之间相互循环引用的问题.JVM采用了可达性分析算法来判断对象是否能回收.用GC Roots对象作为起点,向下搜索,搜索走过的路劲称为引用链(referen...
分类:
编程语言 时间:
2015-03-19 10:15:47
阅读次数:
168
Java虚拟机运行时数据区
运行时数据区主要包括:方法区、堆、虚拟机栈、本地方法栈、程序计数器。
其中方法区和栈是线程共享的区域,另外三块区域是每个线程私有的区域。各个数据区的功能简单说明如下:
程序计数器:当前线程所执行的字节码的行号指示器。
虚拟机栈:描述Java方法执行的内存模型——每个方法在执行的同时都会创建一个栈帧用于存储局部变量表、操作数栈、动态链接、方法出口等信息。每一个方法...
分类:
编程语言 时间:
2015-03-13 22:24:59
阅读次数:
223
1 、本地代码中如何缓存和抛出异常下面的代码中演示了如何声明一个会抛出异常的本地方法。CatchThrow这个类声明了一个会抛出IllegalArgumentException异常的名叫doit的本地方法。class CatchThrow { private native void doit...
分类:
其他好文 时间:
2015-03-13 20:37:41
阅读次数:
163