1.美圖
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHLx0EROp3Z61EeJpHW4Z0MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL5QTN2MDM1IjMwEzMwAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
2.概述
在生産環境中經常遇到格式各樣的問題,如OOM或者莫名其妙的程序死掉。一般情況下是通過修改程式,添加列印日志;然後重新釋出程式來完成。然而,這不僅麻煩,而且帶來很多不可控的因素。有沒有一種方式,在不修改原有運作程式的情況下擷取運作時的資料資訊呢?如方法參數、傳回值、全局變量、堆棧資訊等。Btrace就是這樣一個工具,它可以在不修改原有代碼的情況下動态地追蹤java運作程式,通過hotswap技術,動态将跟蹤位元組碼注入到運作類中,對運作代碼侵入較小,對性能上的影響可以忽略不計。
在下列情況時可以使用BTrace進行分析:
- 接口性能變慢,分析每個方法的耗時情況;
- 當在Map中插入大量資料,分析其擴容情況;
- 分析哪個方法調用了System.gc(),調用棧如何;
- 執行某個方法抛出異常時,分析運作時參數;
- …
3. 使用場景
- 服務慢,能找出慢在哪一步,哪個函數裡麼? <