0
目前我正在处理一个mac应用程序,在该应用程序中我经常遇到OutOfMemoryError。目前我们正在为我们的应用程序使用非可执行的JAR文件,所以我不能在开始我的应用程序之前设置堆大小,因为我的java代码将使用JNI执行,所以有任何可能的方法使用JNI或C设置堆大小。如何使用JNI为非可执行JAR设置堆空间
针对上述问题的任何其他解决方案。 在此先感谢。
目前我正在处理一个mac应用程序,在该应用程序中我经常遇到OutOfMemoryError。目前我们正在为我们的应用程序使用非可执行的JAR文件,所以我不能在开始我的应用程序之前设置堆大小,因为我的java代码将使用JNI执行,所以有任何可能的方法使用JNI或C设置堆大小。如何使用JNI为非可执行JAR设置堆空间
针对上述问题的任何其他解决方案。 在此先感谢。
我找到了答案。我在创建JVM之前使用JNI,因此我们必须将JavaVMOption参数填充为“-Xms256m”以获得最小大小,而将“-Xmx512m”填充为最大大小。它将分配最小JVM堆大小为256 MB,最大JVM堆大小为512 MB。
所以这是代码,以帮助他人:创建JVM
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;
然后通过ARGS(JavaVMInitArgs对象)。以上代码将设置最小和最大堆大小。
还记得1件事情,在设置最大堆大小之前不要设置最小堆大小,因为在这种情况下,您的最小堆大小将大于或等于最大堆大小,并且会崩溃。