android dalvik (1)
来源:互联网 发布:windows touch命令 编辑:程序博客网 时间:2024/06/05 09:45
android dalvik (1)
Android运行库包括两部分:核心库和Dalvik虚拟机。核心库包括了最基本的类库,如data structure, network, Utilities, File system等的。
很多实现代码都是来自Apache Harmony 项目,主要目的是保证虚拟机的类库能够和Java SE的类库最大可能的兼容。
从而降低应用开发者从Java SE阵营转移到Android开发阵营的难度,增加其可用性。Dalvik虚拟机主要是完成对象生命周期的管理,堆栈的管理,线程管理,
安全和异常的管理,以及垃圾回收等等重要功能。
Dalvik 虚拟机的主要特征 Dalvik虚拟机非常适合在移动终端上使用,相对于在桌面系统和服务器系统运行的虚拟机而言,它不需要很快的CPU速度和大量的内存空间。
根据 Google的测算.64M的RAM已经能够令系统正常运转了。其中24M被用于底层系统的初始化和启动,另外20M被用于高层启动高层服务。
当然,随着系统服务的增多和应用功能的扩展,其所消耗的内存也势必越来越大。
main.c
for (curOpt = argIdx = 0; argIdx < argc; argIdx++) {
if (argv[argIdx][0] != '-' && !needExtra)
break;
options[curOpt++].optionString = strdup(argv[argIdx]);
/* some options require an additional arg */
needExtra = JNI_FALSE;
if (strcmp(argv[argIdx], "-classpath") == 0 ||
strcmp(argv[argIdx], "-cp") == 0)
/* others? */
{
needExtra = JNI_TRUE;
}
}
if (needExtra) {
fprintf(stderr, "Dalvik VM requires value after last option flag\n");
goto bail;
}
对虚拟机的输入参数进行解析,每个参数以-开头
其中 -classpath 和-cp 需要扩展
typedef struct JavaVMInitArgs {
jint version; /* use JNI_VERSION_1_2 or later */
jint nOptions;
JavaVMOption* options;
jboolean ignoreUnrecognized;
} JavaVMInitArgs;
初试化参数
jni使用的是 1.4 版本 JNI_VERSION_1_4
blockSigpipe 对管道不处理
调用JNI_CreateJavaVM ,传入初试化类 创建一个VM
typedef const struct JNINativeInterface* JNIEnv;
JNI 环境实际上就是JNI的本地方法
启动的时候需要为虚拟机指定一个类
通过FindClass 找到这个类
通过GetStaticMethodID 找到这个类的main方法
确定这个方式是不是public属性
然后调用这个静态方法
最后退出的时候进行异常检测
这个是 dalvikvm 目录下main.c 的主要功能
1 解析参数 创建VM
2 调用指定类的main方法
3 退出时进行异常检测
- android dalvik (1)
- 第1章 Android Dalvik 配置实战
- android dalvik vm alloc
- android dalvik vm oo
- android dalvik vm alloc
- Android Dalvik虚拟机初识
- Android虚拟机Dalvik
- Android Dalvik虚拟机初识
- android dalvik (2)
- Android Dalvik虚拟机简介
- Android Dalvik虚拟机介绍
- android之Dalvik虚拟机
- Android Dalvik虚拟机初识
- android的dalvik虚拟机
- Android 的 Dalvik VM
- [Android] Dalvik opcodes
- Android虚拟机Dalvik
- Android Dalvik虚拟机初识
- 黑马程序员-float小数比较时出现的问题
- asp.net AJAX 验证用户名是否存在 -Jquery
- 通过IP获取MAC地址
- SQL数据库中查询所有触发器
- 关于PureMVC的notification机制
- android dalvik (1)
- TO_CHAR_转换函数的用法
- 【封闭系列】sort
- 用python分析apache等web日志
- LUA TIP
- Linux(ubuntu)下安装搭建Eclipse开发环境
- uboot-2011.12移植到S3C2440(一)—— 简单修改使u-boot能够编译
- Flex制作的个人简历打印
- Android用AsyncTask来下载图片及用AsyncTask的好处