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

Java 如何使用JNI为不可执行JAR设置堆空间,java,jvm,java-native-interface,jvm-arguments,jvm-crash,Java,Jvm,Java Native Interface,Jvm Arguments,Jvm Crash,目前,我正在开发一个mac应用程序,在这个应用程序中,我经常遇到内存错误。目前,我们正在为应用程序使用不可执行的JAR文件,因此在启动应用程序之前无法设置堆大小,因为我的java代码将使用JNI执行,所以有任何可能的方法可以使用JNI或C设置堆大小 或上述问题的任何其他解决方案。 提前谢谢。我找到了答案。我使用的是JNI,所以在创建JVM之前,我们必须将JavaVMOption参数填充为“-Xms256m”表示最小大小,-Xmx512m”表示最大大小。它将分配最小JVM堆大小为256 MB,最大

目前,我正在开发一个mac应用程序,在这个应用程序中,我经常遇到内存错误。目前,我们正在为应用程序使用不可执行的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对象)。上面的代码将设置最小和最大堆大小

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