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