方法的執行過程

2022-04-10 23:25:09 字數 1048 閱讀 2009

接昨天的文章順便理一理方法的執行過程,這裡借許令波大牛的圖一用

呼叫昨天的run工具,完成了目標原始碼的編譯後;獲取classloader物件,載入目標位元組碼至方法區,在堆上建立class< t >物件並初始化(總之物件就是一種有場景的半持久型資料)。

呼叫物件的方法,開始執行方法區指令,根據該方法的運算元棧深度,區域性變數空間需求等在該執行緒棧上建立棧幀,執行單個方法的過程其實就是在棧幀中操作的過程;呼叫下乙個方法,那麼就重複之前建立棧幀的步驟。

下面列出乙個方法的位元組碼,不難想象方法指令的執行過程

public int calc()
public int calc();

descriptor: ()i

flags: acc_public

code:

stack=2, locals=4, args_size=1 //運算元棧深度為2,區域性變數空間為4個slot

0: bipush 100

2: istore_1

3: sipush 200

6: istore_2

7: sipush 300

10: istore_3

11: iload_1

12: iload_2

13: iadd

14: iload_3

15: imul

16: ireturn

linenumbertable:

line 3: 0

line 4: 3

line 5: 7

line 6: 11

就我而言,在抽象理解方法的執行上,會把棧幀轉移到相應的物件上,沒錯就如下圖

方法的執行一下變得好簡單哈

hibernate 執行儲存過程 方法

private sessionfactory sessionfactory public void setsessionfactory sessionfactory sessionfactory 通過sql執行無返回結果的儲存過程 僅限於儲存過程 param querystring param pa...

C 執行儲存過程 方法

功能 根據呼叫的方法名稱 反射動態呼叫 sql command 的方法 現定義乙個類用來儲存儲存過程引數 儲存過程的屬性 procname 儲存過程的名稱 methodname 執行sqlcommand 方法的名稱 prmlist 儲存過程的引數 public class exeproc 根據制定的...

過濾器方法的執行過程

如題,過濾器涉及的方法onactionexecuting,onactionexecuted,onresultexecuting,onresultexecuted 如果是單個過濾器 onactionexecuting onactionexecuted onresultexecuting onresul...