gpt4 book ai didi

java - 如何使用 JNI 为不可执行的 JAR 设置堆空间

转载 作者:行者123 更新时间:2023-12-01 14:35:35 24 4
gpt4 key购买 nike

目前我正在开发一个 Mac 应用程序,在该应用程序中我经常遇到 OutOfMemoryError 错误。目前,我们的应用程序使用的是不可执行的 JAR 文件,因此我无法在启动应用程序之前设置堆大小,因为我的 java 代码将使用 JNI 执行,因此有任何可能的方法可以使用 JNI 或 C 设置堆大小。

或者上述问题的任何其他解决方案。提前致谢。

最佳答案

我找到了答案。我使用的是 JNI,因此在创建 JVM 之前,我们必须将 JavaVMOption 参数填充为“-Xms256m”(最小大小)和“-Xmx512m”(最大大小)。它将分配最小 JVM 堆大小为 256 MB,最大 JVM 堆大小为 512 MB。

所以这是帮助其他人的代码:

JavaVMInitArgs args;
JavaVMOption options[3];
args.nOptions = 3;

options[0] = (char*)"-Xms256m";
options[1] = (char*)"-Xmx512m";
options[2] = //Your JAR file path.
args.options = options;

然后在创建 JVM 时传递 args(JavaVMInitArgs 对象)。上面的代码将设置最小和最大堆大小。

记住还有一件事,不要在设置最大堆大小之前设置最小堆大小,因为在这种情况下,您的最小堆大小将大于或等于最大堆大小,并且它将崩溃。

关于java - 如何使用 JNI 为不可执行的 JAR 设置堆空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16515934/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com