更新時間:2019-10-03 09:00:00 來源:動力節點 瀏覽2456次
今天動力節點java培訓機構小編為大家分享java方法的調用過程,希望通過此文大家能夠掌握java方法的調用過程,下面就隨小編一起來了解一下吧。
1、java方法的調用過程:前提
JVM在編譯Bootstrap.java 的過程中,在將源代碼編譯成二進制機器碼的同時,會判斷其中的每一個方法的三個信息:
(1)在運行時會使用到的局部變量的數量(作用是:當JVM為方法創建棧幀的時候,在棧幀中為該方法創建一個局部變量表,來存儲方法指令在運算時的局部變量值)
(2)其機器指令執行時所需要的最大的操作數棧的大小(當JVM為方法創建棧幀的時候,在棧幀中為方法創建一個操作數棧,保證方法內指令可以完成工作)
(3)方法的參數的數量
2、java方法的調用過程:java方法的執行
一般地,對于java方法的執行,在JVM在其某一特定線程的虛擬機棧(JVM Stack) 中會為方法分配一個 局部變量表,一個操作數棧,用以存儲方法的運行過程中的中間值存儲。
由于JVM的指令是基于棧的,即大部分的指令的執行,都伴隨著操作數的出棧和入棧
3、java方法的調用過程:機器指令的格式
所謂的機器指令,就是只有機器才能夠認識的二進制代碼(這里指的是jVM)一個機器指令分為兩部分組成:
注:
a). 如上圖所示JVM虛擬機的操作碼是由一個字節組成的,也就是說對于JVM虛擬機而言,其指令的數量最多為 2^8,即 256個;
b). 上圖中的操作碼如:b2,bb,59….等等都是表示某一特定的機器指令,為了方便我們識別,其分別有相應的助記符:getstatic,new,dup…. 這樣方便我們理解。
4、java方法的調用過程:機器指令的執行模式—基于操作數棧的模式
對于傳統的物理機而言,大部分的機器指令的設計都是寄存器的,物理機內設置若干個寄存器,用以存儲機器指令運行過程中的值,寄存器的數量和支持的指令的個數決定了這個機器的處理能力。
但是Java虛擬機的設計的機制并不是這樣的,Java虛擬機使用操作數棧 來存儲機器指令的運算過程中的值。所有的操作數的操作,都要遵循出棧和入棧的規則,所以在《Java虛擬機規范》中,你會發現有很多機器指令都是關于出棧入棧的操作。
以上就是動力節點java培訓機構小編為大家分享的“java方法的調用過程”的內容,希望對大家有幫助,更多java最新資訊請繼續關注動力節點java培訓機構官網,每天會有精彩內容分享與你。
相關免費視頻教程推薦
java入門學習零基礎教程下載——方法的調用:http://m.dabaquan.cn/xiazai/2664.html
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習