2

現在実行中のJVMプロセスのstdoutにフックする方法、またはJVMプロセスのstdoutをファイル以外の場所にリダイレクトする方法はありますか?

アプリケーションの JVM の verbose:gc 出力が必要です。現在、この出力はコンソールに表示されますが、データベースに保存したり処理したりすることはできません。実行中の Java アプリケーションには表示されません。

System.err System.out

どちらもネイティブのラッパーであり、内部 JVM 出力はここでは渡されません。どちらもこの出力を表示できません (リダイレクトされた場合や null に設定された場合は、gc 出力がコンソールに表示されます)。

verbose:gc をファイルに書き込み、次にファイルを読み取る無効なオプションは、パフォーマンス上の理由とファイルシステムのロックが原因で、JVM 起動フラグを介してファイル以外の場所に出力をリダイレクトする方法が与えられていないホットスポット ソースをチェックします。

また、実行中の JVM の Process オブジェクトを取得できませんでした。これにはメソッドがありません。また、Process オブジェクトを公開するネイティブを見つけることができませんでした。このデータを読み取る有効な方法はまだありません。

実行時に verbose:gc を読む方法についての手がかりはありますか?

4

2 に答える 2