黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 一文吃透JVM棧

一文吃透JVM棧

更新時間:2020-10-09 17:30:54 來源:動力節點 瀏覽1521次

JVM棧,全稱為Java 虛擬機棧,線程私有,生命周期和線程一致。描述的是 Java 方法執行的內存模型:每個方法在執行時都會床創建一個棧幀(Stack Frame)用于存儲局部變量表、操作數棧、動態鏈接、方法出口等信息。每一個方法從調用直至執行結束,就對應著一個棧幀從虛擬機棧中入棧到出棧的過程。


當程序開始執行時,由于只有一個main線程,因而JVM只需要為main線程分配好棧區的內存(話句話說如果有多個線程,自然就會有多個棧區,并且為各自線程私有)。main繼續執行,就會遇到main()方法,遇到之后呢!JVM又會在棧區當中再劃出一個小塊來存放main()方法執行過程的數據,這一小塊區域也就是棧幀。main()方法執行過程中又有一個add()方法出現了,同樣地,JVM又會再為add()分配一個棧幀,同時壓入到棧區,以后再遇到其他方法也是如此。當然,方法在執行完成之后,便會彈出并釋放內存,當線程中棧區的所有方法都返回之后,程序也就算是執行完畢了。


當我們扯開棧區,撕開棧幀,一不小心,局部變量表、操作數棧、動態鏈接、方法出口......嘩啦啦地散落一地。

image.png


撿起add()棧幀的局部變量表和操作數棧就可以看到這樣一個畫面,在執行例子中add()方法中的三行代碼時,局部變量表和操作數棧的一個變化過程:首先,執行int a = 3;局部變量表中會分配出一個int區域,表示為a;同時iconst命令使得操作數棧中壓入了常量3,然后再由istore命令將3彈出,賦值給局部變量表中a。同樣,int b = 4; 這一行代碼也是如此。然后,int c = a + b;從右往左開始,先執行a + b,也就是iload命令從局部變量中取出a、b對應的值,再將iadd后的值push進操作數棧中,剩下的便是int c = 7的操作了。


通過上面的例子,就很容易明白;局部變量表,顧名思義就是存放每個方法中的局部變量(即編譯器可知的各種基本類型(boolean、byte、char、short、int、float、long、double)、對象引用(reference 類型)和 returnAddress 類型(指向了一條字節碼指令的地址))所在處,如圖中的a、b。操作數棧,也就是存放的就是方法當中的各種操作數的臨時空間,又如栗子中的3、4。


動態鏈接:Class文件的常量池中存在有大量的符號引用,字節碼中的方法調用指令就以指向常量池的引用作為參數,而將部分符號引用在運行期間轉化為直接引用,這種轉化即為動態鏈接。這個解釋當中會涉及到許多概念,比如常量池、符號引用等,要想理解這些概念,就需要去了解class文件的結構,內容太多就不在這里詳細描述了。


方法出口:簡單來說,就是用于標記當前方法執行完成之后,應該返回到下一條指令執行位置。比如就上面的栗子而言,add()在執行完畢之后,就應該返回到e1.add()之后繼續執行main()后面的代碼。


上面就是對JVM棧的全面講解,還沒有完全弄懂的小伙伴可以通過觀看本站的Java零基礎教程學習更多的JVM知識。


提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 黄色国产 | 成人中文字幕一区二区三区 | 丝袜啪| 国产精品一区二区久久不卡 | 亚洲日本一区二区三区高清在线 | 日韩色视频 | 欧美性猛交xx免费看 | 亚洲黄在线观看 | 俄罗斯一级毛片aaaa | 日韩精品一区二区三区毛片 | 国产精品伦理久久久久久 | 国产高清美女一级a毛片久久 | 欧美a站| 久久久噜噜噜www成人网 | 欧美日韩国产成人综合在线 | 美女一级a毛片免费观看 | 污宅男666在线永久免费观看 | 日韩欧美亚洲一区二区综合 | 国产成人久久精品麻豆二区 | 亚洲成a人片在线观看导航 亚洲成a人片在线观看精品 | 奇米一区二区 | 成人欧美一区二区三区黑人免费 | 日本羞羞无遮挡免费动漫 | 久久国产成人精品 | 涩涩涩视频在线观看免费 | 怡红院在线视频精品观看 | 欧美一级日韩一级 | 欧美日韩亚洲色图 | 伊人精品成人久久综合欧美 | 精品久久香蕉国产线看观看亚洲 | 亚洲精品二区中文字幕 | 欧美精品日韩一区二区三区 | 大黄免费 | 黄色免费网站在线观看 | 成人欧美一区二区三区在线观看 | 手机免费在线看毛片 | 日韩视频一区二区三区 | 欧美午夜在线观看理论片 | 欧美xx在线 | 午夜视频免费看 | 久在草在线 |