0

実行中のアプリケーションのスレッド ダンプを生成したいと考えています。ただし、-3 PID を強制終了すると、実行中のアプリケーションのコンソールにスレッド ダンプが生成されます。

ファイルに生成したい。アプリケーションを ./run.sh > thread_dump として実行できることはわかっています。または、jstack ユーティリティを使用してアプリケーションをファイルにリダイレクトすることもできます。

しかし、私はそれらのいずれも使用したくありません。別のアプローチでは、次の方法でコンソールの完全な出力をファイルにリダイレクトしました。

            File file = new File("out.txt");
    FileOutputStream fos = new FileOutputStream(file);
    PrintStream ps = new PrintStream(fos);
    System.setOut(ps);

これで、すべての出力が out.txt に書き込まれます。それでも、 kill -3 を実行すると、スレッド ダンプがコンソールに書き込まれます。

3番目のアプローチで何が欠けていますか? kill -3 が JVM で呼び出されたときにどのクラス/ソースが呼び出されるか、誰にもわかりますか?

4

1 に答える 1