2016-04-28 20 views
1

プログラムの起動後すぐにJVMフラグを変更/設定したいと思います。私はコマンドラインでそれをすることはできません。なぜなら、それが存在するかどうかわからない人々と仕事をするからです。したがって、プログラムで自動的に実行されなければなりません。ランタイム時のJVMフラグの変更

私は、これらの3つのフラグが特に興味を持っています:-Xms4G -Xmx8G -noverify

私はInterface HotSpotDiagnosticMXBeanを使用して、いくつかのフラグを変更することが可能であることをthis discussion(またはthat one)で見つかりました。そしてthis codeはフラグを修正する方法を示します。残念ながら、フラグXmsまたは単にmsは認識されず、例外がスローされます。

私はまた、capsuleが作業を行う可能性があることを発見しましたが、使用するのがかなり重いようです。

簡単な方法はありますか?

+2

私はあなたができないと言います。しかし、あなたは 'ProcessBuilder'を使って、あなたのコードから2番目のjvmを目的のパラメータで開始することができます。 – joshiste

+0

どのように動作するのか分かりません。他のJVMを起動してもOKですが、私のプログラムはすでに最初のものから起動していました。どのように私はそれを2番目に切り替えることができますか? – FiReTiTi

答えて

3

2つのプログラムを作成する必要があります.1つは、他のプログラムを実行するための正しいパラメータを提供するランチャーです。これは、Eclipseが動作する方法であり、Jitsiと、今終わったInstallShield Multiplatformランチャーです。これは、シェル、.bat、またはVBSスクリプトを使用して作業を行うことができます(例:1行またはそれに近い)。

+1

ありがとうございました!だから私は最初の非常に単純な実行可能なjarファイルを作成する必要があります。これは、ランチャーと呼ばれ、2番目の実行可能なjarファイルを開始することになりますが、必要なすべての引数を伴います。だから私の場合 'java -noverify -Xms4G -Xmx8G -jar MyMainJar.jar'です。私は正しいですか?はいの場合は、コマンドだけを開始するコマンドを知っていますか? – FiReTiTi

+0

Btw、ソフトはマルチプレートフォームでなければならないので、私はジャーランチャーを言った。 – FiReTiTi

+1

はい、ランチャープログラムをJavaで記述することができます。 (これはInstallShield Multiplatformランチャーの仕組みです)['Runtime.exec()'](https://docs.oracle.com/javase/8/docs/api/java/lang/Runtime.html#exec -java.lang.String:A-)またはその他の制御['ProcessBuilder'](https://docs.oracle.com/javase/8/docs/api/java/lang/ProcessBuilder.html) – dsh

関連する問題