2

MaxGCPauseMillis (G1ガベージコレクター用)などのJava GCオプションはJavaアプリケーション内から設定できますか、それともアプリケーションの起動に使用するコマンドラインで設定する必要がありますか?

つまり、コードで次の任意の部分を実行できますか?

java -XX:+UseG1GC -XX:MaxGCPauseMillis=10 -XX:GCPauseIntervalMillis=100 -jar app.jar
4

2 に答える 2

6

いいえ、これは不可能です。すでに起動しているVMのGCオプションを変更することはできません。

それに、これは良い考えではないと思います。GCオプションは、ソースコードから独立している必要があります。

  • 同じアプリケーションの場合、使用するVM、使用するハードウェアなどに応じて、異なるGCオプションが必要になる場合があります。
  • GCオプションは、アプリケーションの機能上のニーズに完全に直交するプロパティです。

最近のアプリケーション(Eclipseなど)は通常、GCチューニングオプションを含むVMオプションを指定できるプロパティファイルを使用します。これはクリーンなソリューションだと思います。

于 2013-01-28T19:35:43.337 に答える
1

JDKのjinfo-flagコマンドを使用して、Javaプロセスを実行するために特定の(ただしごくわずかな)-XXオプションクラウドを変更します。

-XX:+ PrintFlagsFinalオプションを使用して、すべてのJVMXXオプションのリストを表示できます。{managable}タイプのクラウドを持つオプションは実行時にjinfoによって変更されます。

しかし、それはおそらく悪い考えです。アプリケーションでのGCの動作が心配な場合は、GCについて学ぶ必要があります。魔法のXXオプションや他のショートカットはありません...残念ながら。

于 2013-01-29T10:08:35.973 に答える