Java JNI:内存分配/分区

发布于 2024-11-07 06:49:34 字数 374 浏览 0 评论 0原文

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


详细信息

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


相关问题:

Java内存分配限制

When using JNI, does the JNI binary use its own memory, or use part of the memory allocated to the JVM?


Details

When you specify -Xmx1024m as a JVM option, does the JVM allocate all 1024 mb of memory to Java objects?
Does it use part of this for Java objects and part of this for the JNI binary, or does the JNI binary have to use memory in addition to this amount? How does the JVM allocate/ partition/ manage memory use in this scenario?


Related questions:

Java memory allocation limit

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

旧竹 2024-11-14 06:49:34

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

As I discovered first hand when we had a memory leak in some JNI code, the JNI binary uses its own memory within the JVM process outside of any JVM heap space. We were seeing Linux actually kill off the JVM because the JVM as a whole was exceeding 3GB of virtual memory. But we were using -Xmx384m and were only using about 40MB of that on the Java objects side of things, which pretty much proves that JNI uses memory outside of the JVM heap space.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文