大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

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

一文吃透JVM棧

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

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知識。


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

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 国产亚洲精品麻豆一区二区 | 99久久精品免费观看区一 | 手机看片福利盒子久久 | 每日更新在线观看av | 中文字幕天堂久久精品 | 久热这里只精品99国产6_99 | 深夜成人性视频免费看 | 久久久久国产精品免费免费 | 天天干免费视频 | 不卡中文 | 久久精品一区二区三区中文字幕 | 青春草久久 | 国产精品短视频 | 香蕉亚洲欧洲在线一区 | 色综合网亚洲精品久久 | 亚洲国产欧美在线不卡中文 | 国产舐足视频在线观看 | 久久www视频 | 99热久久国产综合精品久久国产 | 久久日本精品99久久久久 | 天堂成人精品视频在线观 | 精品成人免费一区二区在线播放 | 成年午夜视频免费观看视频 | 九九亚洲精品 | 免费国产成人高清在线观看视频 | 国产图片综合区 | 一区二区三区不卡在线 | 成人欧美日韩高清不卡 | 亚洲精品国产成人中文 | 在线a毛片免费视频观看 | 欧美熟videos肥婆 | 91精品国产综合久久婷婷 | 国产精品久久久久久久久kt | 日日射天天射 | 国内久久精品 | 色偷偷女人的天堂a在线 | 久久婷婷久久一区二区三区 | 日本一级特级毛片视频 | 亚洲免费视频一区二区三区 | 色偷偷成人网免费视频男人的天堂 | 国产精品19p |