2013-05-13 55 views
0

目前我正在处理一个mac应用程序,在该应用程序中我经常遇到OutOfMemoryError。目前我们正在为我们的应用程序使用非可执行的JAR文件,所以我不能在开始我的应用程序之前设置堆大小,因为我的java代码将使用JNI执行,所以有任何可能的方法使用JNI或C设置堆大小。如何使用JNI为非可执行JAR设置堆空间

针对上述问题的任何其他解决方案。 在此先感谢。

回答

1

我找到了答案。我在创建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件事情,在设置最大堆大小之前不要设置最小堆大小,因为在这种情况下,您的最小堆大小将大于或等于最大堆大小,并且会崩溃。

相关问题