2013-05-13 59 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件事情,在設置最大堆大小之前不要設置最小堆大小,因爲在這種情況下,您的最小堆大小將大於或等於最大堆大小,並且會崩潰。

相關問題