2

ゲーム エンジンを作成しようとしていますが、既定の設定より多くのメモリが必要です。jar をダブルクリックすると、デフォルト設定が使用されることはわかっています。JARがマニフェストファイル(または他の場所)でカスタムヒープサイズを必要とすることを指定できる方法はありますか?

また、エンジンは独自の jar にあり、ゲームは別の jar にあり、エンジンはライブラリとして使用されます。両方の JAR で異なる制限を指定した場合、JVM はどちらを優先しますか?

4

2 に答える 2

3

JAR でコマンド ライン オプションを指定することはできません (クラス パスのライブラリを除く)。

できることは、Runtime.exec() で必要なオプションを使用して JAR 自体を再起動させることです。

于 2012-08-30T17:01:37.387 に答える
3

マニフェストの仕様には、ヒープ領域を制御するために使用できるプロパティはありません。代わりに、実装の 1 つを使用して、実際の main メソッドで 2 番目のプロセスを実行するランチャー main メソッドをアプリケーションに記述することができますRuntime.execjava.homeシステム変数にアクセスできるため、ランチャーを実行している Java のバージョンを使用してゲームを起動することもできます。

// Fix to use the version appropriate to the OS
String javaPath = System.getProperty("java.home") + "\bin\java.exe";
Runtime.exec("\"" + javaPath + "\" mygame.jar <heap_args>");

を使用java.homeして Java パスを取得すると、パスの問題が回避されます。これにより、プログラムの起動方法を変更することにした場合に、将来の起動を制御することもできます。たとえば、これを使用するProcessように変更して、ランチャーでプロセスが終了するのを待つこともできるため、ゲームの JVM が完全に終了したときに実行後のクリーンアップを制御できます。

于 2012-08-30T17:24:35.397 に答える