我正在分析採用線程轉儲的方法之間的差異。下面是他們夫婦的我研究上在生產中採用線程轉儲
定義JMX Bean上通過的Runtime.exec觸發jstack()上單擊聲明豆操作。
守護線程在預定義的時間間隔後重復執行「ManagementFactory.getThreadMXBean()。dumpAllThreads(true,true)」。
比較兩者之間的線程轉儲輸出,我看到下面的缺點的方法登錄與做法2 2
- 線程轉儲不能開源線程轉儲分析器像TDA
- 解析輸出不包括本地線程ID,這可能有助於分析高CPU問題(對吧?)
- 還有更多?
我希望對
獲得建議/輸入那裏通過的Runtime.exec()在生產代碼執行jstack的任何缺點?各種操作系統上的兼容性問題 - windows,linux?
任何其他方法採取線程轉儲?
謝謝。
編輯 -
的1和2相結合的辦法似乎是要走的路。我們可以在後臺運行一個專用線程,並以線程轉儲分析程序能夠理解的格式將日誌文件中的線程轉儲打印出來。 如果需要任何額外的信息(如說可能是本地線程ID),它只記錄jstack輸出,我們根據需要手動執行。
這與JEE應用程序有關嗎? –
@WaleedMadanat是 –