假设我通过JNI从Java调用一些C代码,而在C代码中有一些全局数组。这个内存是如何分配和管理的?我假设它不会在JVM堆上。
答案 0 :(得分:3)
它不在JVM堆或本机元空间上。内存是从为java进程提供的本机内存空间分配的,即将JVM作为本机OS进程启动的进程。它由分配它的本机代码管理,因此如果您不手动free
全部malloc
,则会出现内存泄漏。
没有太多具体材料需要依赖,但是,Oracle guide是一个开始挖掘的好地方。
答案 1 :(得分:1)
全局数组必须是静态的,这意味着它位于共享库的数据段中。