Android本机代码堆栈与Dalvik VM / ART堆栈

时间:2018-10-04 03:46:49

标签: android android-ndk

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

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

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

1 个答案:

答案 0 :(得分:1)

托管JVM堆和本机堆是分开的,但是它们不是完全隔离的。在底层,JVM使用相同的系统调用,并且通过JNI,您可以访问Java基本数组的内存。

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