Java - 如何管理JNI C代码中的内存?

时间:2016-08-04 22:46:56

标签: java c java-native-interface

假设我通过JNI从Java调用一些C代码,而在C代码中有一些全局数组。这个内存是如何分配和管理的?我假设它不会在JVM堆上。

2 个答案:

答案 0 :(得分:3)

它不在JVM堆或本机元空间上。内存是从为java进程提供的本机内存空间分配的,即将JVM作为本机OS进程启动的进程。它由分配它的本机代码管理,因此如果您不手动free全部malloc,则会出现内存泄漏。

没有太多具体材料需要依赖,但是,Oracle guide是一个开始挖掘的好地方。

答案 1 :(得分:1)

全局数组必须是静态的,这意味着它位于共享库的数据段中。