日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

【Java 虚拟机原理】线程栈 | 栈帧 | 局部变量表 | 反汇编字节码文件 | Java 虚拟机指令手册 | 程序计数器

發(fā)布時(shí)間:2025/6/17 java 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Java 虚拟机原理】线程栈 | 栈帧 | 局部变量表 | 反汇编字节码文件 | Java 虚拟机指令手册 | 程序计数器 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

  • 一、線程棧
  • 二、棧幀
  • 三、棧幀 - 局部變量表
  • 四、反匯編字節(jié)碼文件
  • 五、Java 虛擬機(jī)指令手冊(cè)
  • 六、程序計(jì)數(shù)器





一、線程棧



裝載 HelloWorld.class 字節(jié)碼文件到 Java 虛擬機(jī)內(nèi)存中 , 會(huì)將該字節(jié)碼文件中的數(shù)據(jù)進(jìn)行分解 , 放到不同的內(nèi)存區(qū)域中 ;

public class HelloWorld {public int add() {int a = 1;int b = 1;int c = a + b;return c;}public static void main(String[] args) {HelloWorld helloWorld = new HelloWorld();helloWorld.add();} }

運(yùn)行該 HelloWorld.class 字節(jié)碼文件 , 會(huì)創(chuàng)建一個(gè)進(jìn)程 ;

java HelloWorld.class

main 方法是程序入口 , 運(yùn)行后會(huì)創(chuàng)建一個(gè)線程 , 就是程序的主線程 ;

public static void main(String[] args) {

此時(shí)會(huì)針對(duì) main 主線程 , 創(chuàng)建主線程的線程棧 ;


每個(gè) 線程 , 都要?jiǎng)?chuàng)建一個(gè) 線程棧 ;





二、棧幀



創(chuàng)建 main 主線程獨(dú)有的 線程棧 , 主要存放 " 棧幀 " , 每個(gè)方法都對(duì)應(yīng)一個(gè) 棧幀 , 這里存放的是 main 方法對(duì)應(yīng)的棧幀 , 棧幀中存放 臨時(shí)變量 , 操作數(shù) ;

" 棧幀 " 同數(shù)據(jù)結(jié)構(gòu)中的 棧 性質(zhì)相同 , 先進(jìn)后出 , 后入先出 ;

主線程 線程棧 中 , 執(zhí)行 main 函數(shù) , 放入了 main 方法的 棧幀 , 然后創(chuàng)建了 HelloWorld 對(duì)象 , 又執(zhí)行該對(duì)象的 add 方法 , 又放入了 add 方法的 棧幀 ;

線程棧 中以 棧 的方式 管理 " 棧幀 " , 后進(jìn)入的 棧幀 先執(zhí)行 , 執(zhí)行完畢后 , 從 線程棧 中 移出 ;


" 棧幀 " 中存儲(chǔ)的是 局部變量表 , 操作數(shù)棧 , 動(dòng)態(tài)鏈接 , 方法出口 ;





三、棧幀 - 局部變量表



局部變量表 :

以如下方法為例 :

public int add() {int a = 1;int b = 1;int c = a + b;return a + b;}

局部變量表 , 存儲(chǔ)局部變量 , 就是上述方法中的 a , b, c , 333 個(gè)局部變量 ;


在 main 方法的 棧幀 的局部變量表中 , 存儲(chǔ)局部變量 helloWorld ; 但是注意 HelloWorld 對(duì)象的數(shù)據(jù)存儲(chǔ)位置是 堆 ;

public static void main(String[] args) {HelloWorld helloWorld = new HelloWorld();helloWorld.add();}



四、反匯編字節(jié)碼文件



使用

javac HelloWorld.java

命令 , 將 HelloWorld.java 編譯為 HelloWorld.class 字節(jié)碼文件


使用

javap -c HelloWorld.class

命令 , 對(duì) HelloWorld.class 字節(jié)碼文件進(jìn)行反匯編 ;

D:\java>javap -c HelloWorld.class Compiled from "HelloWorld.java" public class HelloWorld {public HelloWorld();Code:0: aload_01: invokespecial #1 // Method java/lang/Object."<init>":()V4: returnpublic int add();Code:0: iconst_11: istore_12: iconst_13: istore_24: iload_15: iload_26: iadd7: istore_38: iload_39: ireturnpublic static void main(java.lang.String[]);Code:0: new #2 // class HelloWorld3: dup4: invokespecial #3 // Method "<init>":()V7: astore_18: aload_19: invokevirtual #4 // Method add:()I12: pop13: return }





五、Java 虛擬機(jī)指令手冊(cè)



反匯編的結(jié)果都是 Java 虛擬機(jī)指令 ; 這些指令都是交給 Java 虛擬機(jī) 執(zhí)行的 ;

根據(jù) Java 虛擬機(jī) 指令手冊(cè) , 分析上面的 Java 虛擬機(jī)指令 ;

附件中有一份 Java 虛擬機(jī)指令手冊(cè) , 可以在博客資源中下載 ;





六、程序計(jì)數(shù)器



CPU 時(shí)間片輪轉(zhuǎn) : 假設(shè)有一個(gè)單核 CPU , 給每個(gè)線程都會(huì)劃分一個(gè)運(yùn)行時(shí)間 ;

將 1 秒鐘拆分成 1000 份 , 每份 1ms ; 很多線程在爭(zhēng)取 CPU 資源 , 操作系統(tǒng)需要給每個(gè)線程進(jìn)行 CPU 時(shí)間分配 , 如給線程 1 分配 3ms , 線程 2 分配 5ms , 線程 1 執(zhí)行完畢后 , 馬上切換到線程 2 執(zhí)行 , 線程 2 執(zhí)行完畢后 , 馬上其它線程繼續(xù)搶占 ;


線程 1 執(zhí)行了 3ms , 然后 CPU 運(yùn)行線程 2 , 假如 x ms 之后 , 再次回到線程 1 運(yùn)行 , 需要靠程序計(jì)數(shù)器記錄應(yīng)該執(zhí)行哪條 JVM 指令 ;


多個(gè)線程并發(fā)運(yùn)行時(shí) , 相互交叉搶占 CPU 資源 , 線程執(zhí)行完分配的 CPU 時(shí)間后 , 需要記錄下當(dāng)前運(yùn)行到哪 , 下一次分配到 CPU 資源后 , 繼續(xù)執(zhí)行哪條 JVM 指令 , 這里就需要 程序計(jì)數(shù)器 來(lái)實(shí)現(xiàn)該功能 ;


程序計(jì)數(shù)器就是記錄下面的 JVM 指令前的數(shù)字 ;

public int add();Code:0: iconst_11: istore_12: iconst_13: istore_24: iload_15: iload_26: iadd7: istore_38: iload_39: ireturn

總結(jié)

以上是生活随笔為你收集整理的【Java 虚拟机原理】线程栈 | 栈帧 | 局部变量表 | 反汇编字节码文件 | Java 虚拟机指令手册 | 程序计数器的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日韩a级一片 | 国产精品无码久久久久成人app | 久久精品国产亚洲AV熟女 | 永久国产 | 三年中文在线观看中文版 | 性欧美又大又长又硬 | 国产精品 日韩 | 中文字幕乱码视频 | 永久免费av在线 | 91亚洲视频在线观看 | 瑟瑟av| 国产农村妇女毛片精品久久 | 久草热视频 | 亚洲女优在线 | 久久久综合精品 | 日韩人妻一区 | www.狠狠插| 自拍偷拍五月天 | av激情久久 | www成人在线观看 | 国产精品成人无码专区 | 国产一区免费观看 | 日本精品视频在线播放 | www.亚洲黄色| 久久精品一二三区 | 自拍偷拍 国产 | 久热精品在线视频 | 毛片视频免费播放 | 这里只有精品免费视频 | 91久久久久久久久久久久 | 成人午夜免费网站 | 中国女人内谢69xxxxⅹ视频 | 亚洲精品一区二区三区影院忠贞 | 亚洲熟妇国产熟妇肥婆 | 黄色喷水视频 | 91成人综合 | 亚洲午夜激情视频 | 91免费版在线| 欧美性猛交aaaa片黑人 | 天天摸夜夜添狠狠添婷婷 | 天天尻逼| 久久无码人妻丰满熟妇区毛片 | 日韩精品黄 | 伊人久久一区二区 | 2019年中文字幕 | caoprom超碰| 国产精品一区二区免费视频 | 久久av一区 | 亚洲色图50p | 先锋影音在线 | 黄色av网站在线观看 | www狠狠| 亲子伦视频一区二区三区 | 国产亚洲精品久久久久久打不开 | 国产一级av毛片 | 黄色一级黄色片 | 无码人妻精品一区二区三区9厂 | 亚洲m码 欧洲s码sss222 | 奇米影视9999| 九九精品在线播放 | www.激情五月.com | 超碰2022| 国产免费无码一区二区视频 | 肉色超薄丝袜脚交一区二区 | 成人动漫一区二区 | 双性人bbww欧美双性 | 国产美女菊爆在线播放APP | 无人码人妻一区二区三区免费 | 精品国产露脸精彩对白 | 欧洲a级片 | 外国a级片| 国产欧美日韩三区 | 国产孕妇一区二区三区 | youjizz国产 | 天天天天天天天天干 | 天堂中文在线8 | 国产911在线观看 | 想要视频在线 | 91精品国产综合久久国产大片 | 手机av在线不卡 | 中国毛片基地 | 亚洲精品av在线 | 国产精品国产三级国产普通话蜜臀 | 韩国精品一区二区 | 久久精品无码毛片 | 欧美精品乱人伦久久久久久 | 亚洲午夜精品 | 日韩亚洲一区二区三区 | 天天想你在线观看完整版电影高清 | 影音先锋波多野结衣 | 国产人伦精品一区二区三区 | 日韩免费观看一区二区 | 黄色小视频免费在线观看 | 国产在线自 | 婷婷综合在线观看 | 老太婆av| 亚洲黑丝在线 | 在线国产视频一区 | 2020亚洲男人天堂 |