Java JNI:内存分配/分区

时间:2011-05-13 02:23:28

标签: java memory jvm java-native-interface

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


详细信息

当您将-Xmx1024m指定为JVM选项时,JVM是否将所有1024 MB的内存分配给Java对象?
它是否将部分内容用于Java对象,部分内容用于JNI二进制文件,还是JNI二进制文件除了此数量外还必须使用内存?在这种情况下,JVM如何分配/分区/管理内存?


相关问题:

Java memory allocation limit

1 个答案:

答案 0 :(得分:18)

当我在一些JNI代码中发现内存泄漏时,我发现第一手资料时,JNI二进制文件在任何JVM堆空间之外的JVM进程中使用自己的内存。我们看到Linux实际上已经淘汰了JVM,因为JVM整体上超过了3GB的虚拟内存。但是我们使用的是-Xmx384m并且只在Java对象方面使用了大约40MB的内容,这几乎证明了JNI使用了JVM堆空间之外的内存。