对于特定的java程序,我需要更多的内存,然后是标准数量,但我不能使用命令行来获取更多,因为它使用了启动器。
我尝试将“-Xms1024m -Xmx1024m”添加到Java控制面板中的运行时参数,这只运行一次,但是下次启动程序时,内存又回到了低默认值。 如何可靠地为此程序获取更多内存?
答案 0 :(得分:3)
大多数发射器(至少是我看过的发射器)为您提供了应用jvm参数的选项。您可以在此处添加-Xms1024m -Xmx1024m
。例如,在Launch4J中,您可以这样设置:
您可以在底部看到,您也可以输入自己的参数,尽管已经将内存内容作为单独选项提供。我打赌你的启动器应用程序也可以这样做。
答案 1 :(得分:1)
为什么不编写一个只引导主进程的简单java进程?
所以启动程序启动进程A,进程A又使用您需要的参数启动进程B?
答案 2 :(得分:1)
.exe启动程序似乎反过来更新并启动.jar启动器。 我通过简单地将内存参数添加到命令行命令来启动.jar启动器来解决问题。它不会以这种方式自动更新启动器,但它已经足够了。
答案 3 :(得分:0)
JNIEnv* create_vm(JavaVM ** jvm)
{
JNIEnv *env;
JavaVMInitArgs vm_args;
JavaVMOption options;
strcpy(options.optionString, CLASSPATH); //fix for options.optionString = CLASSPATH;
if (DEBUG) printf("optionString = %s\n", options.optionString);
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("\n<<<<< Unable to Launch JVM >>>>>\n");
return env;
}
正确?如果是这种情况,只需将这些选项添加到optionsString。
听起来你要么硬编码,要么为设置这些属性的启动器提供.config文件。但这种变化肯定会发生在发射器上。
答案 4 :(得分:0)
如果无法控制启动器,则必须创建自己的Java启动器。
您当前的启动程序可以启动JAR,它可以使用正确的JVM args再次启动JAR。即,JAR可以使用Runtime.exec()运行自身(相同的主要或不同的),并使用运行程序所需的参数。
AFAIK,您无法使用控制面板通过命令行控制java运行。如果它现在不起作用,我怀疑它从来没有真正起作用,也许它并不重要,它不起作用。