特定のJavaプログラムでは、標準の量よりも多くのメモリが必要でしたが、ランチャーを使用しているため、コマンドラインを使用してより多くのメモリを取得することはできません。
Javaコントロールパネルのランタイムパラメータに「-Xms1024m-Xmx1024m」を追加しようとしましたが、これは1回は機能しましたが、次にプログラムを起動したときに、メモリがデフォルトの低い値に戻りました。このプログラムのメモリを確実に増やすにはどうすればよいですか?
ほとんどのランチャー(少なくとも私が見たもの)には、jvmパラメーターを適用するオプションがあります。ここにを追加できます-Xms1024m -Xmx1024m
。たとえば、Launch4Jでは、次のように設定できます。
下部にあるのは、独自のパラメーターを入力することもできることです。ただし、メモリーはすでに個別のオプションとして提供されています。私はあなたのランチャーアプリもそれを行うことができるに違いない。
メインプロセスをブートストラップするだけの単純なJavaプロセスを作成してみませんか?
では、ランチャーはプロセスAを起動し、プロセスAは必要なパラメーターを使用してプロセスBを起動しますか?
.exeランチャーは、.jarランチャーを更新して起動するように見えました。コマンドラインコマンドにメモリパラメータを追加して.jarランチャーを起動するだけで、問題が修正されました。この方法でランチャーが自動的に更新されるわけではありませんが、十分です。
ランチャーのどこかに、これに似た関数呼び出しがあります。
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ファイルを提供するようです。しかし、変更は間違いなくランチャーに行きます。
ランチャーを制御できない場合は、独自のJavaランチャーを作成する必要があります。
現在のランチャーはJARを開始でき、正しいJVM引数を使用してJARを再度開始できます。つまり、JARはRuntime.exec()を使用して、プログラムの実行に必要な引数を使用して自身(同じメインまたは別のメイン)を実行できます。
AFAIK、コマンドラインからJavaの実行を制御するためにコントロールパネルを使用することはできません。今は機能しないのなら、実際には機能しなかったのではないかと思います。おそらく、機能していなくても問題ありませんでした。