国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Java調(diào)用鏈跟蹤關(guān)鍵技術(shù)(五)獲取調(diào)用棧

VPointer / 3762人閱讀

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

一、調(diào)用棧

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

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

二、獲取調(diào)用棧

在Java中獲取調(diào)用棧的方法如下:

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");
    }
}

輸出結(jié)果:

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個棧是調(diào)用eat的方法。

三、注意事項

在實際代碼中需要注意:

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

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

end.

微信公眾號:

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

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

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/75865.html

相關(guān)文章

  • Java調(diào)用跟蹤關(guān)鍵技術(shù)(一)總體介紹

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

    gaara 評論0 收藏0
  • Java調(diào)用跟蹤關(guān)鍵技術(shù)(四)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調(diào)用跟蹤關(guān)鍵技術(shù)(三)線程變量

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

    ThreeWords 評論0 收藏0
  • Web全應(yīng)用之旅-啟程篇

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

    longmon 評論0 收藏0
  • Java調(diào)用跟蹤關(guān)鍵技術(shù)(二)Javaagent

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

    geekzhou 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<