java jni开发中c程序申请的内存是否在java的对堆内存或栈内存?
浏览量:1346
时间:2021-03-27 04:37:34
作者:admin
jni开发中c程序申请的内存是否在java的对堆内存或栈内存?
不,Java的内存由JVM虚拟机管理。它相当于预先从操作系统的内存中取出一个块并对其进行独占管理。它属于已经使用过的那个。Java的内存又从这个内存中一个一个地划分出来。JNI是Java程序与C语言之间的交互技术,相当于JVM进程与外部进程之间的交互。因此,此时用C语言分配的内存直接从操作系统的内存中应用,与JVM应用的大内存块无关。
jni和ndk的区别?
区别如下:
JNI是Java调用本机机制,这是Java语言本身的特性。它的全名是Java本机接口,类似于微软的P/invoke。Net框架,可以使C#或可视化基本.Net调用C/capi,因此JNI与Android无关。在PC上开发Java应用程序,如果运行在Windows平台上,经常使用JNI,比如读写Windows注册表。
NDK是Google推出的一个开发包,帮助Android开发者用C/C本地语言编写应用程序。它包含C/C头文件、库文件、文档和示例代码。
我们可以理解,它是用纯C/C编写的,就像Windows平台SDK一样,但是Android不支持用纯C/C编写的应用程序,同时NDK提供的库和函数非常有限,只处理一些算法效率敏感的问题。因此,android123建议初学者在学习JNI之前先学习java。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。
上一篇
恶意域名重定向原理 什么是重定向
下一篇
河南电网公司网站 河南移动