Java JNI:内存分配/划分

14

使用JNI时,JNI二进制文件是使用自己的内存还是使用JVM分配的内存的一部分?


细节

当您将-Xmx1024m作为JVM选项指定时,JVM是否会将所有1024 MB的内存分配给Java对象?
它是否将其中一部分用于Java对象,另一部分用于JNI二进制文件,或者JNI二进制文件必须使用额外的内存?JVM如何在这种情况下分配/划分/管理内存的使用?


相关问题:

Java内存分配限制

1个回答

19

当我们在某些JNI代码中遇到内存泄漏时,我第一时间发现JNI二进制在JVM进程中使用自己的内存而不是任何JVM堆空间。我们看到Linux实际上杀死了JVM,因为整个JVM超过了3GB的虚拟内存限制。但我们使用了-Xmx384m参数,而且只使用了大约40MB在Java对象方面的空间,这基本上证明JNI使用了JVM堆空间之外的内存。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接