《arthas原始碼分析》位元組碼增強(三)

2021-10-05 15:52:31 字數 1115 閱讀 4952

當執行reset、shutdown命令之後,需要對增強後的目標類進行恢復,

本篇主要對重置命令的實現進行分析。

注意:reset命令對redefine的類無效。redefine後的原來的類不能恢復。如果想重置,需要redefine原始的位元組碼。 原因是redefine和retransform是不同的機制,詳情參見我之前寫的文章。

resetcommand#process

@override

public

void

process

(commandprocess process)

catch

(unmodifiableclas***ception e)

finally

}

enhancer#reset

重置增強類

注意:當前方法中的transform()返回null,reset只是恢復原位元組碼內容,無需定義任何增強邏輯。

public

static

synchronized enhanceraffect reset

(final instrumentation inst,

final matcher classnamematcher)

throws unmodifiableclas***ception

}//定義位元組碼轉換器

final classfiletransformer resetclassfiletransformer =

newclassfiletransformer()

};tryfinally

}return affect;

}

enhancer#enhance

批量重置。

public

static

void

enhance

(instrumentation inst, classfiletransformer transformer, set?>> classes)

throws unmodifiableclas***ception

}finally

}

Lua位元組碼分析

lua 首先會被lua編譯器 通常所指的luac 編譯為二進位制檔案,編譯是以乙個lua檔案為單位,比如乙個lua檔案內有語法錯誤,即使你不執行相關 這個檔案也是編譯不過去的 編譯完成後,然後二進位制檔案被lua虛擬機器載入執行。但實際上我們並不能看到編譯器的這個過程,這是因為lua直譯器是隱式呼叫...

spring原始碼分析 spring原始碼分析

1.spring 執行原理 spring 啟動時讀取應用程式提供的 bean 配置資訊,並在 spring 容器中生成乙份相應的 bean 配置登錄檔,然後根據這張登錄檔例項化 bean,裝配好 bean 之間的依賴關係,為上 層應用提供準備就緒的執行環境。二 spring 原始碼分析 1.1spr...

思科VPP原始碼分析(dpo機制原始碼分析)

vpp的dpo機制跟路由緊密結合在一起。路由表查詢 ip4 lookup 的最後結果是乙個load balance t結構。該結構可以看做是乙個hash表,裡面包含了很多dpo,指向為下一步處理動作。每個dpo都是新增路由時的乙個path的結果。dpo標準型別有 dpo drop,dpo ip nu...