ここで次のような記事をいくつか見てきました。
プログラムでスレッドダンプ /JDI (Java Debugger Interface) しかし、正確な答えは得られませんでした。
問題: サービスとして実行される Windows 上の Java5 アプリケーションがあります (そのため、ダンプにCtrl+を使用できるコンソールがありませんBreak)。また、アプリケーションがハングして、スレッド ダンプが必要になることもあります。
「jstack」を試してみましたが、env では機能しません (Java6 のみと互換性があることがわかりました)。
そこで、Java アプリ プロセスにアタッチする .dll 呼び出しメソッドを介してスレッド ダンプを呼び出す C++ アプリを作成しました。このため、ローカル管理者権限が必要であり、あまり良くありません。
したがって、管理者権限なしで機能し、既存のコードを大幅に変更せずに Java 5 で機能する他のオプションが必要です。
LOOP スレッド ダンプで印刷する方法は(Thread.getAllStackTraces())
、機能させるために多くのアプリケーションをリファクタリングする必要があるため、オプションではありません。
そのため、アプリケーションの「外部」から機能するユーティリティだけが最良の選択肢になります。
前もって感謝します!