浅析JAVA、Dalvik VM、C/C++的运行机制
来源:互联网 发布:js object转string 编辑:程序博客网 时间:2024/06/03 09:26
在Android的NDK中,Java、C/C++、Dalvik VM关系如下:
1)java的dex字节码和C/C++的*.so同时运行DalvikVM之内,共同使用一个进程空间。每次使用jni调用c/c++开辟一个线程去处理。
2)java和C/C++可以相互调用,调用的关键是DalvikVM
3)一般而言,比较经典的模式是Java通过JNI的C组建和C++相互沟通,一般业务处理放在C/C++中。
4)C++代码处于核心控制地位更具价值
当java需要C/C++代码时,在DalvikVM虚拟机中加载动态链接库时,会先调用JNI_Onload()函数,此时就会把javaVM对象的指针存储于C层JNI组建的全局环境中,在JAVA层调用C层的本地库函数时,调用C本地函数线程必然通过Dalvik VM来调用C本地函数,测试Dalvik虚拟机会为本地的C组建实例化一个JNIEnv指针,该指针指向Dalvik虚拟机的具体函数列表,当JNI的C组件调用java层方法和属性时,需要通过JNIEnv指针来进行调用。
当C++组件主动调用Java层方法时,需要通过JNI的C组件把JNIEnv指针传递给C++组件,此后,c++组件即可通过JNIEnv指针来掌控Java层代码
- 浅析JAVA、Dalvik VM、C/C++的运行机制
- Dalvik VM和JVM的浅析
- Dalvik VM (DVM) 和Java VM (JVM)之间的区别
- Dalvik VM (DVM) 与Java VM (JVM)的区别
- Dalvik VM (DVM) 和Java VM (JVM)之间的区别
- Dalvik VM (DVM) 与Java VM (JVM)的区别
- Dalvik VM (DVM) 与Java VM (JVM)的区别
- Dalvik VM (DVM) 与Java VM (JVM)的区别
- DVM和JVM(Dalvik VM和Java VM)的区别
- Dalvik VM (DVM) 与Java VM (JVM)之间的区别
- Android 的 Dalvik VM
- Dalvik VM的主要特征
- C运行机制
- vm-c
- C++/JAVA/C#运行机制和执行效率
- C++/JAVA运行机制和运行效率
- 堆栈浅析(Java&C++)
- Dalvik vm (DVM)与java vm (JVM)的区别。android为什么要用DVM.
- SD card creating reference
- C++面试题细解
- 二分查找法C++代码实现
- webcam capture image combined with ROS on epuck
- string模块1-capwords()
- 浅析JAVA、Dalvik VM、C/C++的运行机制
- 高性能服务器设计
- Android常用命令
- unicode编码转换gb2312编码
- 仿QQ使用JAVA、C#、JS基于TCP交互的Demo
- 一个高效的定时器分析及设计
- epuck camera node test--> error
- 学习 Linux高级编程01
- iwconfig命令