Java Virtual Machine Stacks(虚拟机栈)
經(jīng)過上面的分析,類加載機(jī)制的裝載過程已經(jīng)完成,后續(xù)的鏈接,初始化也會相應(yīng)的生效。
假如目前的階段是初始化完成了,后續(xù)做啥呢?肯定是Use使用咯,不用的話這樣折騰來折騰去有什么意義?那怎樣才能被使用到?換句話說里面內(nèi)容怎樣才能被執(zhí)行?比如通過主函數(shù)main調(diào)用其他方法,這種方式實際上是main線程執(zhí)行之后調(diào)用的方法,即要想使用里面的各種內(nèi)容,得要以線程為單位,執(zhí)行相應(yīng)的方法才行。
那一個線程執(zhí)行的狀態(tài)如何維護(hù)?一個線程可以執(zhí)行多少個方法?這樣的關(guān)系怎么維護(hù)呢?
虛擬機(jī)棧是一個線程執(zhí)行的區(qū)域,保存著一個線程中方法的調(diào)用狀態(tài)。換句話說,一個Java線程的運行狀態(tài),由一個虛擬機(jī)棧來保存,所以虛擬機(jī)棧肯定是線程私有的,獨有的,隨著線程的創(chuàng)建而創(chuàng)建。
每一個被線程執(zhí)行的方法,為該棧中的棧幀,即每個方法對應(yīng)一個棧幀。
調(diào)用一個方法,就會向棧中壓入一個棧幀;一個方法調(diào)用完成,就會把該棧幀從棧中彈出。
Each Java Virtual Machine thread has a private Java Virtual Machine stack, created at the same time as the thread. A Java Virtual Machine stack stores frames (§2.6).畫圖理解棧和棧幀
?
總結(jié)
以上是生活随笔為你收集整理的Java Virtual Machine Stacks(虚拟机栈)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Heap(堆)
- 下一篇: Java虚拟机对synchronized