在android中乙個方法在art中對應乙個artmethod,artmethod中儲存著方法的類、訪問許可權和執行位址等資訊。
在android6.0中,art虛擬機器的artmethod的結構是這樣的:/art/runtime/art_method.h class artmethod中成員變數
art 可以採用解釋模式或者aot模式執行。
解釋模式就是取出dex code,逐條解釋執行。這個時候回取這個方法的entry_point_from_interpreter_
然後跳轉執行。
aot模式是」ahead of time」,在安裝時將dex code 優化成機器碼,執行時直接執行機器碼執行。呼叫這個方法時會呼叫entry_point_from_quick_compiled_code_
,然後跳轉執行。
只要替換上面兩個指標就可以實現熱替換了嗎?
答案肯定不是的,因為無論是解釋模式還是aot執行當中還會用到artmethod中的其他字段。比如dex_cache_resolved_methods_
,比如aot模式下雖然已經編譯成機器碼,但是機器碼是不能脫離虛擬機器單獨執行的。例如在aot模式下呼叫乙個方法時,獲得artmethod中dex_cache_resolved_methods_
,這是乙個存放artmethod*的指標陣列,通過它可以獲得artmethod所在dex所有method對應的artmethod*。
虛擬機器技術簡介之四 API層虛擬機器
api 層虛擬機器的典型代表是開源專案 wine 它構造了乙個 windows 使用者態應用程式和其它作業系統之間的適配層 adapter layer 當這些應用程式需要在其他作業系統下呼叫乙個 win32 api 函式時,wine 將把該呼叫轉換成相應作業系統下對該函式的模擬實現。wine 系統在...
VMware虛擬機器聯網方法
1.把虛擬網絡卡vmnet8設定為自動獲得ip 自動獲得dns伺服器,啟用。2.把你虛擬機器中作業系統的 本地連線 也設定為自動獲得ip 自動獲得dns伺服器 在虛擬機器中,右鍵 本地連線 雙擊 internet 協議 看看是不是自動的吧!固定ip的也在這裡改!3.將虛擬機器的上網方式選為nat。右...
虛擬機器安裝vmware tools方法
以下步驟不行的情況下,請使用非簡易重新安裝ubuntu系統 1.選擇虛擬機器軟體選單欄中的 虛擬機器 安裝vmware tools 虛擬機器軟體自動更換和載入對應的vmware tools安裝光碟映象iso檔案。2.開啟vmware tools光碟,找到其中的 vmwaretools 9.9.2 2...