我有一個作爲Windows服務運行的Tomcat,並且這些已知不能與jstack一起使用。另一方面,jconsole運行良好,我可以看到各個線程的堆棧(我連接到「localhost:port」來訪問它)。如何通過JMX創建線程轉儲?
如何使用jconsole或類似工具將所有線程堆棧轉儲到文件中? (類似於jstack)
我有一個作爲Windows服務運行的Tomcat,並且這些已知不能與jstack一起使用。另一方面,jconsole運行良好,我可以看到各個線程的堆棧(我連接到「localhost:port」來訪問它)。如何通過JMX創建線程轉儲?
如何使用jconsole或類似工具將所有線程堆棧轉儲到文件中? (類似於jstack)
您可以使用ThreadMXBean管理界面。
此FullThreadDump類演示了使用JMX遠程檢測全線程轉儲和檢測死鎖的功能。
現在,您可以使用jvisualvm工具通過JMX連接到遠程JVM並創建線程轉儲。不知道這是否是可用的
,如果你把一個飛行記錄,以獲取有關JVM行爲更深的看法,特別是集中於熱點方法這將是有益的。
通常情況下,錄製半小時就足夠了。觸發錄像,你必須在機器上登錄,併發出以下命令:
如果使用Java HotSpot的1.8.x的:
$ JAVA_HOME /斌/ jcmd VM.unlock_commercial_features $ JAVA_HOME/bin中/ jcmd JFR.start持續時間= 1800 =設置文件名的個人資料=的/ tmp/recording.jfr
如果使用的Java HotSpot的1.7.x:
編輯你的$ HOME/conf目錄/ wrapper.conf文件中加入以下JVM啓動時的參數:
wrapper.java.additiona = - XX:+ UnlockCommercialFeatures wrapper.java.additional = - XX:+ FlightRecorder
(與相應的位置編號替換)
然後,已重新啓動你的實例。一旦完成,發出以下命令:
$ JAVA_HOME /斌/ jcmd JFR.start持續時間= 1800 =設置文件名的個人資料=的/ tmp/recording.jfr
飛行記錄西港島線產生一個文件/ tmp/recording.jfr終止後。
這是令人難以置信的緩慢:( – 2015-11-27 06:29:54