成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

Java調用鏈跟蹤關鍵技術(五)獲取調用棧

VPointer / 3867人閱讀

摘要:一調用棧調用鏈監(jiān)控僅僅獲取調用順序是不夠的,如前所描述左邊只體現(xiàn)了順序,右邊體現(xiàn)了順序和調用棧信息。二獲取調用棧在中獲取調用棧的方法如下代碼示例輸出結果可以看到第個棧是調用的方法。

一、調用棧

調用鏈監(jiān)控僅僅獲取調用順序是不夠的,如前所描述:

左邊只體現(xiàn)了順序,右邊體現(xiàn)了順序和調用棧信息。

二、獲取調用棧

在Java中獲取調用棧的方法如下:

Thread.currentThread().getStackTrace()

代碼示例:

public class Man {

    public static void main(String[] args) {
        Man man = new Man();
        man.getup();
        man.brushTeeth();
        man.eat();
    }

    public void getup() {
        System.out.println("getup");
    }

    public void brushTeeth() {
        System.out.println("brush teeth");
    }

    public void eat() {
        StackTraceElement[] elements = Thread.currentThread().getStackTrace();
        for (int i = 0; i < elements.length; i++) {
            StringBuffer buffer = new StringBuffer();
            buffer.append("index: ").append(i).append(" ClassName: ").append(elements[i].getClassName())
                    .append(" Method Name : " + elements[i].getMethodName());
            System.out.println(buffer.toString());
        }
        System.out.println("eat");
    }
}

輸出結果:

getup
brush teeth
index: 0 ClassName: java.lang.Thread Method Name : getStackTrace
index: 1 ClassName: com.javashizhan.demo.Man Method Name : eat
index: 2 ClassName: com.javashizhan.demo.Man Method Name : main
eat

可以看到第3個棧是調用eat的方法。

三、注意事項

在實際代碼中需要注意:

并不一定是第3個棧就是當前方法的父方法,如在spring中調用還會有其他父方法,這個數(shù)字大于3。

一次調用過程中有的方法可能被循環(huán)調用導致有多個同名方法,因此通過類名和方法名并不一定就能準確找到對應的父方法,應查找調用鏈上最近的一個同名方法。

end.

微信公眾號:

加入《Java棧實戰(zhàn)營》知識星球,參與討論,更多實戰(zhàn)代碼分享!
https://t.zsxq.com/RNzfi2j

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://m.hztianpu.com/yun/75865.html

相關文章

  • Java調用跟蹤關鍵技術(一)總體介紹

    摘要:微服務中調用棧的獲取,使用的開發(fā)者會很自然想到用來攔截,但是攔截同一個類的多個方法之間的調用很不方便,有侵入性,因此并不適合。調用棧的跟蹤也提供了這個能力,可以獲得當前方法的調用棧信息。 一、調用鏈跟蹤的作用 調用鏈跟蹤包括 1.前端到后端的調用鏈 2.單個服務內部方法之間的調用鏈 3.微服務之間的調用鏈 4.應用服務和數(shù)據(jù)庫之間的調用鏈 5.應用服務和第三方服務中...

    gaara 評論0 收藏0
  • Java調用跟蹤關鍵技術(四)SQL監(jiān)控

    摘要:一監(jiān)控一般思路中監(jiān)控一般通過代理模式實現(xiàn),如下右邊是接口類。配置將項目下文件放到目錄下或者中,找到將類名修改為你自己的實現(xiàn)類,并去掉其他所有配置都不用修改就可以監(jiān)控到。至此,可以監(jiān)控到語句了。 一、SQL監(jiān)控一般思路 Java中SQL監(jiān)控一般通過代理模式實現(xiàn),如下: showImg(https://segmentfault.com/img/bVbvWML?w=2187&h=1090)...

    ?xiaoxiao, 評論0 收藏0
  • Java調用跟蹤關鍵技術(三)線程變量

    摘要:除了以上級別的成員變量共享,在調用鏈跟蹤時要能識別不同分層下的多個類實例的調用是同一個請求,而這個請求的調用都在一個獨立線程內完成,此時就要用到線程級變量共享。 一、Java類成員作用域 JAVA類成員作用域參考下圖: showImg(https://segmentfault.com/img/bVbvWlh?w=1695&h=925); Java虛擬機級作用域,通過在類成員變量前加...

    ThreeWords 評論0 收藏0
  • Web全應用之旅-啟程篇

    摘要:但能拷貝圖粘貼后不失真通常是收費富文本編輯器才具備的能力。是否支持編程語言高亮,例如按,語言高亮是否支持數(shù)學公式等等因此選擇了兩款富文本編輯器,支持截屏粘貼,當做跟蹤系統(tǒng)時這個功能特別有用。 一、Web應用技術棧 在開發(fā)Web應用時,通常會使用到以下技術棧: showImg(https://segmentfault.com/img/bVbwceG);對應這些技術棧都已有相應的開源產品...

    longmon 評論0 收藏0
  • Java調用跟蹤關鍵技術(二)Javaagent

    摘要:一網上關于的介紹很多,請找度娘和谷兄。唯一提的一點是字節(jié)碼注入比較好用的是,封裝度很高,使用簡單。二代碼樣例以下為關鍵代碼樣例,可以依樣畫瓢自行改造。加入棧實戰(zhàn)營知識星球,參與討論,更多實戰(zhàn)代碼分享,不就是幾斤蘋果,幾個榮耀道具的事嗎 一、Javaagent 網上關于Javaagent的介紹很多,請找度娘和谷兄。唯一提的一點是字節(jié)碼注入比較好用的是bytebuddy,封裝度很高,使用簡...

    geekzhou 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<