2013-05-13 3 views
0

현재 OutOfMemoryError가 자주 발생하는 Mac 응용 프로그램에서 작업 중입니다. 현재 우리는 응용 프로그램에 대해 실행 불가능한 JAR 파일을 사용하고 있으므로 응용 프로그램을 시작하기 전에 힙 크기를 설정할 수 없습니다. JNI를 사용하여 Java 코드가 실행되므로 JNI 또는 C를 사용하여 힙 크기를 설정할 수 있습니다.JNI를 사용하여 비 실행 JAR을위한 힙 공간을 설정하는 방법

또는 위의 문제에 대한 다른 해결책. 미리 감사드립니다.

답변

1

답변을 찾았습니다. JNI를 사용하기 전에 JVM을 만들기 전에 JavaVMOption 매개 변수를 최소 크기의 경우 "-Xms256m"으로, 최대 크기의 경우 "-Xmx512m"으로 채워야합니다. 최소 JVM 힙 크기는 256MB로, 최대 JVM 힙 크기는 512MB로 할당합니다.

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; 

다음 (가 JavaVMInitArgs 개체) 인수를 전달 JVM을 만드는 동안 :

그래서이 다른 사람을 도울 수있는 코드입니다. 위의 코드는 최소 및 최대 힙 크기를 설정합니다.

기억하십시오. 최소 힙 크기를 설정하기 전에 최소 힙 크기를 설정하지 마십시오.이 경우 최소 힙 크기가 최대 힙 크기보다 크거나 같아서 충돌 할 수 있습니다.