2009-07-11 50 views
3

私はJavaで実装されたゲームをスクリプトからあまりにも多くのコードを実行すると問題を抱えていました。スクリプトの言語によっては、ゲームが数フレームごとにフリーズするこれらの "ヒカップ"時にはゲームがぎくしゃくしてしまいます。.jarにVMパラメータを含める方法はありますか?

いくつかの調査の末、ガベージコレクタが実行を決定したときに起こっていたことがわかりました。より多くの研究とテストの後で、(-Xincgc VMパラメータを使用して)インクリメンタルガベージコレクタを使用すると問題が解決されることがわかりました。はい、私はそれが約10%遅くGCを実行することを認識していますが、それは私が支払うコストです。

この背景情報を使って、これまでのように.jarでゲームをパッケージ化していますが、-Xincgcを使用せずにインクリメンタルGCを使用する方法はわかりません。私は.bat/.shファイルを作成したくなかった。その前にユーザは.jarをダブルクリックするだけだった。

何らかのローダー(.bat/.sh)やラッパーを必要とせずにインクリメンタルGCで.jarを実行する方法はありますか?そのパラメータを.jarに含める方法はありますか?

答えて

5

いいえ、それを行う方法はありません。 VM引数は、JVM呼び出しのコマンドラインパラメータとしてのみ提供できます。

0

jarをクリックして実行する社内のcoorporateまたはdevの外部のJavaアプリケーションがあまりにも多いことはわかりません。ショートカットでもこれを指定できます。 exeを作成したり、サービスとして実行したり、インストーラですべてをラップしたりするためのオプションが存在します。もしウィンドウを話しているのであれば、Linuxにも同様のことがあります。

3

これは間違いなくJNLPで行うことができます。これは、デスクトップにショートカットを追加し、自動的にジャーを最新の状態に保つように設定できます。

0

Java Web Startの他に、JSMoothでラッピングすることもできます。それはEXEを与え、これはJVMを呼び出します。そこに引数を与えることができます。

1

jarファイルだけでは、これを行うことはできません。 Java WebStartを追加すると、java VMコマンドを追加できます。実行ファイルにjarファイルをラップしないのでなければ、Launch4Jは実行ファイルにjarファイルをラップします。それは、ウィンドウズexeを作るだけですが、それはLinuxやWindows上で作ることができます。私はLinuxのための良い選択肢を発見していない。

0

1つのオプション - 私はいつもパラメータが不十分なときにRuntime.exec()を呼び出してjarプログラムを再実行することをお勧めしますか?決して試したことはありませんが、可能です。

関連する問題