Android应用程序可以使用Android NDK执行C / C ++代码。所有Android应用程序也都可以在Android VM(即Dalvik / ART)上运行。
我的问题是,Android应用程序中的本机代码是否使用与Android VM相同的堆栈/堆?
即在本机代码中,我们可以创建局部变量,也可以通过malloc / new创建变量,这些变量将分别存储在堆栈或堆中。但我的理解是,Android VM将创建其自己的对象用于簿记。那么,本机代码和Android VM是否在内存中共享相同的堆栈/堆?
答案 0 :(得分:1)
托管JVM堆和本机堆是分开的,但是它们不是完全隔离的。在底层,JVM使用相同的系统调用,并且通过JNI,您可以访问Java基本数组的内存。
对于堆栈,JVM和C在每个线程中共享它。但并非所有本机线程都已附加到JVM。