1

Tomcat のような Web サーバー上のサーブレット コンテナーで実行される Grails/Spring アプリケーションがあります。JVM が最大許容メモリ (Xmx) に達すると、アプリがクラッシュすることがあります。

次のエラーは、Java ヒープ領域がいっぱいであるため、「java.lang.OutOfMemoryError」です。

このエラーを防ぐために、アプリ内から使用中のメモリ量と現在の JVM のメモリ量を確認したいと考えています。

アプリケーション内からこれらのパラメーターにアクセスするにはどうすればよいですか?

4

4 に答える 4

1

コンテキストに関連する URL に情報を表示するGrails Melody Pluginを試すことができ/monitoringます。

于 2013-08-20T23:27:45.247 に答える
0

このエラーを防ぐために、アプリ内から使用中のメモリ量と現在の JVM のメモリ量を確認したいと考えています。

このまま進むのは得策ではないと思います。アプリを実際に壊す原因を調査し、エラーを排除するか、そこに制限を設けることをお勧めします。さまざまなシナリオがあり、アプリが予測不能になる可能性があります。要約すると、監視目的でメモリレベルをキャプチャすることは問題ありませんが (ただし、そのための専用ツールが多数あります)、私の意見では、アプリケーションロジックでこれらの値に依存することは推奨されておらず悪い習慣です。

于 2013-08-20T23:48:58.363 に答える
0

これを行うには、アプリケーション内でそのようなメトリックを監視するコードを用意するのではなく、プロファイラーを使用してアプリケーションと JVM をプロファイリングします。

プロファイリングは、プログラムのスペース (メモリ) や時間の複雑さ、特定の命令の使用状況、関数呼び出しの頻度と期間などを測定する動的プログラム分析の形式です。

以下に、いくつかの優れた Java プロファイラを示します。

http://visualvm.java.net/ (無料)

http://www.ej-technologies.com/products/jprofiler/overview.html (有料)

于 2013-08-21T00:01:50.210 に答える