Javaプログラムを実行する仮想マシンがインストールされている基盤となるオペレーティングシステムとしてlynx OSを備えた組み込みシステムがあります。次に、ベース OS の実行中のプロセスとメモリ使用率をキャプチャする必要があります。また、仮想マシンで実行中のマルチスレッド アプリケーションを追跡するためのトレース システムも必要です。キャプチャしたデータをリモート サーバーに送信する必要があります。このシナリオを実現するための提案をお願いします。
1 に答える
あなたの質問のjvm部分に関して:
通常、各Javaプログラムは独自のjvmプロセスで実行されるため、個別に監視する必要があります。jvmのメモリ使用量を監視するには、基本的にガベージコレクションの統計を監視する必要があります。これを実現するには、コマンドラインに次のコマンドライン引数を追加する必要があります。
-XX:+PrintGCDetails
ガベージコレクションの情報を出力します。
-XX:+PrintGCTimeStamps
これには、ガベージコレクションの出力にタイムスタンプが含まれます。
また、以下を使用してgc出力をファイルにリダイレクトすることもできます。
-Xloggc:file
ここで、fileは、gc出力がログに記録されるファイルです。次に、このファイルを送信して処理し、プログラムの動作に関する有用な情報を抽出できます。その情報に基づいて、メモリ使用量に関してアプリケーションを調整できます。
jvmプロセスを短期間(つまり、問題の調査と解決のために)監視する必要がある場合、別のオプションはNetBeansなどのプロファイラーを接続することです。これにより、gc出力よりもはるかに多くの情報が提供されますが、プロファイラーはjvmプロセスのパフォーマンスを低下させるため、このオプションは短期間しか使用できません。
OSとシステムレベルの統計に関しては、私はLynxOSの専門家ではありませんが、統計の収集に優れたLinuxシステムでgangliaやnagiosなどの人気のあるツールをいくつか使用しました。ただし、LynxOSで使用できるかどうかはわかりません。