当您将-Xmx1024m
指定为JVM选项时,JVM是否将所有1024 MB的内存分配给Java对象?
它是否将部分内容用于Java对象,部分内容用于JNI二进制文件,还是JNI二进制文件除了此数量外还必须使用内存?在这种情况下,JVM如何分配/分区/管理内存?
答案 0 :(得分:18)
当我在一些JNI代码中发现内存泄漏时,我发现第一手资料时,JNI二进制文件在任何JVM堆空间之外的JVM进程中使用自己的内存。我们看到Linux实际上已经淘汰了JVM,因为JVM整体上超过了3GB的虚拟内存。但是我们使用的是-Xmx384m
并且只在Java对象方面使用了大约40MB的内容,这几乎证明了JNI使用了JVM堆空间之外的内存。