2011-03-25 3 views
1

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"); 

답변

0

이 보인다는 - 다시 시도하고 작동합니다.