接昨天的文章順便理一理方法的執行過程,這裡借許令波大牛的圖一用
呼叫昨天的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...