Linux下查看Java進程的運行期間堆棧情況

  以前解決過一個問題,繞了很大的一個彎,才瞭解到Linux下查看Java進程的運行堆棧的方法。雖然現在被jstack可以替代很多,呵呵

  在linux下 用ps命令查看java進程的進程號,然後用kill -3 pid的方法,使得java進程向自己的標準輸出(或已經被重定向),輸出當前進程的堆棧、內存、線程、鎖的使用情況。

  如果有死鎖的話,會明確打印出dead lock信息。

  如果有常備線程退出的話,會明確沒有該線程的堆棧。對於此方法的使用經驗,非常建議給每一個生命週期和程序一樣的線程都命名上友好的命名。

  當時的故障,如果知道用到這個命令的話,就可以知道多個線程都會競爭同一個鎖上,而當前得到鎖的線程卻因爲udp checksum的異常,導致鎖一直釋放不掉。

  如果知道他,會很加快速度。共享下經驗吧



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章