根据JNI_CreateJavaVM创建JVM,收到OutOfMemoryError

根据JNI_CreateJavaVM创建JVM,收到OutOfMemoryError,jvm,java-native-interface,out-of-memory,Jvm,Java Native Interface,Out Of Memory,我正在根据JNI用C++程序创建一个JVM,并且创建本身运行良好。与JVM的通信也很好;我能够找到类、创建对象、调用方法等等。但是我的一个方法需要相当多的内存,JVM在调用它时抛出OutOfMemoryError。我不明白,因为有超过1 GB的可用RAM。整个过程使用了大约200MB的内存,似乎它甚至没有尝试分配更多的内存;它保持在200MB,然后抛出异常 我试图将-Xmx选项传递给JVM,但当通过JNI创建JVM时,它将不起作用。据我所知,通过JNI创建的JVM应该能够访问所有可用的内存,这使

我正在根据JNI用C++程序创建一个JVM,并且创建本身运行良好。与JVM的通信也很好;我能够找到类、创建对象、调用方法等等。但是我的一个方法需要相当多的内存,JVM在调用它时抛出OutOfMemoryError。我不明白,因为有超过1 GB的可用RAM。整个过程使用了大约200MB的内存,似乎它甚至没有尝试分配更多的内存;它保持在200MB,然后抛出异常

我试图将-Xmx选项传递给JVM,但当通过JNI创建JVM时,它将不起作用。据我所知,通过JNI创建的JVM应该能够访问所有可用的内存,这使得-Xmx选项变得不必要,但显然这个假设是错误的

所以问题是,我怎么能告诉JVM它应该使用它所需要的内存呢

系统:MacOS 10.6

JVM的创建:

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");
JNIEnv*env;
JavaVMInitArgs vm_args;
JavaVMOption选项;
//java源代码的路径
options.optionString=jvm_options;//设置类路径
vm_args.version=JNI_version_1_6//JDK版本。这表示版本1.6
vm_args.nOptions=1;
vm_args.options=&options;
vm_args.ignoreunrecogned=0;
int ret=JNI_CreateJavaVM(jvm,(void**)&env和vm_args);
如果(ret<0)
printf(“\n无法启动JVM\n”);

似乎我在-Xmx选项上出了问题-再试一次,现在就可以了