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