舉幾個例子
1、查看最繁忙的線程,以及是否有阻塞情況發生?
場景:我想看下查看最繁忙的線程,以及是否有阻塞情況發生? 常規查看線程,一般我們可以通過 top 等系統命令進行查看,但是那畢竟要很多個步驟,很麻煩。
2、確認某個類是否已被系統加載?
場景:我新寫了一個類或者一個方法,我想知道新寫的代碼是否被部署了?
3、如何查看一個class類的源碼信息?場景:我新修改的內容在方法內部,而上一個步驟只能看到方法,這時候可以反編譯看下源碼。
4、如何跟蹤某個方法的返回值、入參?場景:我想看下我新加的方法在線運行的參數和返回值?
5、如何看方法調用棧的信息?場景:我想看下某個方法的調用棧的信息?
運行此命令之后需要即時觸發方法才會有響應的信息打印在控制臺上。
6、找到最耗時的方法調用?
場景:testMethod這個方法入口響應很慢,如何找到最耗時的子調用?
運行此命令之后需要即時觸發方法才會有響應的信息打印在控制臺上,然后一層一層看子調用。
7、如何臨時更改代碼運行?場景:我找到了問題所在,能否線上直接修改測試,而不需要在本地改了代碼后,重新打包部署,然后重啟觀察效果?
如上,是直接更改線上代碼的方式,但是一般好像是編譯不成功的。所以,最好是本地ide編譯成 class文件后,再上傳替換為好!
總之,已經完全不用重啟和發布了!這個功能真的很方便,比起重啟帶來的代價,真的是不可比的。比如,重啟時可能導致負載重分配,選主等等問題,就不是你能控制的了。
8、我如何測試某個方法的性能問題?