JNI 당 C++ 프로그램에서 JVM을 생성 중이며, 생성 자체가 정상적으로 작동합니다. JVM과의 통신도 정상적으로 작동합니다. 나는 클래스를 찾고, 객체를 만들고, 메소드를 호출 할 수있다. 하지만 내 방법 중 하나는 많은 메모리가 필요하며 JVM은이를 호출 할 때 OutOfMemoryError를 발생시킵니다. 어느 쪽이 사용할 수있는 여유 공간이 1GB 이상이므로 이해할 수 없습니다. 전체 프로세스는 약 200MB를 사용하며 더 많은 것을 할당하려고 시도하지 않습니다. 200MB의 용량을 유지하면 예외가 발생합니다.JNI_CreateJavaVM 당 JVM 생성하기, OutOfMemoryError 수신하기
JVM에 -Xmx-option을 전달하려고했지만 JNI를 통해 JVM을 만들 때 작동하지 않습니다. 내가 아는 한, JNI를 통해 생성 된 JVM은 사용 가능한 모든 메모리에 액세스 할 수 있어야하므로 -Xmx-options는 불필요합니다. 물론이 가정은 틀립니다.
그래서 문제는 JVM이 필요한만큼 메모리를 사용해야한다는 것입니다.
시스템 : 맥 OS 10.6 JVM의
창조 : 나는 -Xmx-옵션에 뭔가 문제가있어 같은
JNIEnv *env;
JavaVMInitArgs vm_args;
JavaVMOption options;
//Path to the java source code
options.optionString = jvm_options; // setting the classpath
vm_args.version = JNI_VERSION_1_6; //JDK version. This indicates version 1.6
vm_args.nOptions = 1;
vm_args.options = &options;
vm_args.ignoreUnrecognized = 0;
int ret = JNI_CreateJavaVM(jvm, (void**)&env, &vm_args);
if(ret < 0)
printf("\nUnable to Launch JVM\n");