Android Native Code Stack vs Dalvik VM / ART Stack



Android 应用可以使用 Android NDK 执行 C/C++ 代码。所有Android应用程序也运行在Android VM(即Dalvik/ART(上。

我的问题是,Android 应用程序中的本机代码是否使用与 Android VM 相同的堆栈/堆?

即在本机代码中,我们可以通过malloc/new创建局部变量和变量,这些变量将分别存储在堆栈或堆上。但我的理解是,Android VM将创建自己的对象进行簿记。那么原生代码和 Android VM 是否共享相同的内存堆栈/堆?

托管 JVM 堆和本机堆是分开的,但它们不是完全隔离的。在后台,JVM使用相同的系统调用,通过JNI,您可以访问java原始数组的内存。

至于堆栈,JVM和C每个线程共享它。但并非所有本机线程都附加到 JVM。

最新更新