亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

Java 虛擬機結構基礎研究之二

2019-11-18 11:33:21
字體:
來源:轉載
供稿:網友

  通過上一篇文章的介紹我們了解了JVM中數據類型以及數據區的知識,這篇我們會通過對JVM堆棧的幀的具體介紹了解方法執行的一些內幕。

  幀通常用于存儲數據和部分結果,同時還用于執行動態鏈接、返回方法的返回值以及分發異常。

  幀在方法調用的時候被創建,在方法完成的時候銷毀。它是在創建它的線程的JVM堆棧中分配到空間的,每個幀都有它自己的局部變量數組、操作數堆棧和一個當前方法所在的類的運行時常量池的引用。

  它的局部變量數組和操作數堆棧的大小是在編譯的時候就確定了的,而且它是和它所聯系的方法的代碼一起提供的,因此它的數據結構的尺寸僅僅依靠于JVM的實現和方法調用時同時可以分配的內存。

  對于正在執行的方法而言只有一個幀是活動的,這個幀就是所謂的當前幀,它的方法就是當前方法,當前方法所在的類被定義為當前類。局部變量和操作數堆棧的操作通常和當前幀有關。

  假如一個幀所在的方法調用了另外的方法或者方法結束,那么該幀不再是當前幀。假如是調用另外的方法,那么一個新的幀會被創建并且在控制權轉換到新方法時成為當前幀;假如是方法結束,假如有方法返回,當前幀將它的方法調用的結果傳遞給前一個幀,當前一個幀成為當前幀時當前幀被丟棄。

  需要注重的是由一個線程創建的幀是局部于該線程的,其它的線程不能引用它。

  每個幀都包含變量數組,也就是我們所熟知的局部變量數組。一個局部變量可以保存一個boolean、 byte、char、short、int、float、引用或者returnAddress值,一對局部變量才能保存一個long或者double值。

  局部變量是根據索引進行尋址的,第一個局部變量的索引是0。假如一個整型值介于0和局部變量數組的長度之間并且也只有在這個區間的時候它才會被作為局部變量數組的索引。

  long型或者double型的值占用兩個連續的局部變量,這樣的值可能只能使用較小的那個索引值進行尋址,例如,局部變量數組中索引為n的double變量值實際上占用n和n+1,但是局部變量n+1是不能讀取的,它可以被寫入,但是這樣做會使得局部變量n的內容無效。JVM沒有要求n是偶數,這就意味著double和long型值在局部變量數組中不必是64位對齊的,JVM的實現者可以決定使用適當的方式表示那樣的值。

  JVM使用局部變量傳遞方法調用的參數,對于類方法調用(也就是static方法),所有的參數都是連續的存儲在局部變量表中并且是從0開始的,對于實例方法調用,所有的參數也是連續的但是是從1開始的,局部變量0存儲的是實例方法所在的類實例的引用。

  每個幀都包含一個后進先出的堆棧,也就是它的操作數堆棧。

  操作數堆棧在剛剛被創建的時候是空的,JVM提供指令從局部變量或者成員加載常量或者值到堆棧,其它的JVM指令從操作數堆棧提取操作數,操作它們并將結果放回操作數堆棧。操作數堆棧也用于預備傳遞給方法的參數以及接收方法的結果。

  例如一個iadd指令將兩個int值相加,該指令要求它的前一條指令將它要相加的兩個值壓入操作數堆棧的最上面,它從操作數堆棧取出那兩個值進行相加并將結果放回操作數堆棧。

  子計算可能是嵌套在操作數堆棧中的,產生的值可以被嵌入的計算使用。

  操作數堆棧的每一項都可以保存JVM的任何類型的值,包括long和double型的。

  操作數堆棧中的值必須根據其類型進行操作。下面的這些情況都是不可能的:壓入兩個int值而后續的操作將它們作為long型或者壓入兩個float值而后續的操作是iadd指令(該指令的操作對象是兩個int型)。有一小部分JVM指令(例如dup和swap)將運行時數據區的值作為原始的值(raw value)進行操作而不考慮其類型,這些指令是以一種不能用于修改或者分解單獨的值的方式定義的,這些對操作數堆棧操作的限制通過類文件驗證進行了強制。

  在任何時候操作數堆棧都有其相應的深度,long或者double型的值是兩個單位而其它的值是一個單位。

  每個幀都包含一個相應于當前方法的類型的運行時常量池的引用以支持方法代碼的動態鏈接。類文件代碼中的方法代碼指的是被調用的方法以及通過符號引用可以訪問的變量,動態鏈接將這些符號方法引用翻譯為具體的方法引用、在必要的時候加載類以解析未定義的符號以及將變量訪問翻譯為那些變量的運行時位置在存儲結構中的適當的偏移。方法和變量的晚期綁定使得方法使用到的其它類的變化可以破壞該代碼的可能性更小。

  假如方法調用沒有導致一個異常(無論是JVM拋出的還是代碼顯式拋出的)就被認為是方法調用正常結束。假如當前方法調用正常結束,那么一個值可能被返回給調用它的方法。

  在這種情況下,當前幀被用于恢復調用者的狀態,包括它的局部變量和操作數堆棧以及適當增加程序計數器以跳過方法調用指令。方法調用者所在的幀的程序的執行正常的繼續,假如有方法返回,返回值被壓入幀的操作數堆棧。

  假如方法里面的一個JVM指令的執行引起JVM拋出一個異常并且那個異常在方法里面沒有被處理就會導致方法調用忽然結束,執行一個athrow指令也可以導致一個異常被顯式的拋出并且假如那個異常沒有被當前方法捕捉也可以導致方法調用忽然結束,一個忽然結束的方法調用永遠也不會向它的調用者返回一個值。

  一個幀可能會被像調試信息這樣的與實現相關的特定信息擴展。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲香蕉伊综合在人在线视看| 日韩av电影在线播放| 在线精品国产成人综合| 久久精品视频在线| 国产精品视频自在线| 91精品国产九九九久久久亚洲| 欧美一级视频一区二区| 91美女高潮出水| 亚洲色图日韩av| 精品视频久久久| 午夜美女久久久久爽久久| 日本免费在线精品| www.日韩av.com| 亚洲tv在线观看| 人体精品一二三区| 91av视频在线免费观看| 91国内免费在线视频| 久久久av一区| 欧美成人激情图片网| 国产ts一区二区| 国产成人综合av| 欧美极品美女视频网站在线观看免费| 国产成人综合精品| 久久久久久久香蕉网| 欧美日本高清一区| 亚洲欧美国产一区二区三区| 国产中文字幕日韩| 狠狠干狠狠久久| 国产精品狼人色视频一区| 久久久久久久久久国产精品| 日韩激情视频在线| 亚洲人成五月天| 中文字幕亚洲图片| 日韩欧美国产视频| 51精品国产黑色丝袜高跟鞋| 91精品久久久久久久久久久久久| 伊人久久久久久久久久久| 欧美在线视频观看| 97精品国产97久久久久久| 97人洗澡人人免费公开视频碰碰碰| 欧美性xxxxhd| 国产女人精品视频| 91亚洲一区精品| 国产剧情久久久久久| 中文字幕久久亚洲| 欧美孕妇与黑人孕交| 亚洲免费高清视频| 欧美成人在线网站| 日韩av在线不卡| 8090理伦午夜在线电影| 国产精品爽爽爽爽爽爽在线观看| 亚洲性视频网站| 在线免费看av不卡| 亚洲国产精品女人久久久| 亚洲综合中文字幕68页| 国内成人精品一区| 亚洲三级黄色在线观看| 中文字幕精品国产| 国内外成人免费激情在线视频网站| 精品无人区乱码1区2区3区在线| 欧美自拍大量在线观看| 亚洲最大成人网色| 亚洲一区国产精品| 亚洲无亚洲人成网站77777| 日韩亚洲一区二区| 77777少妇光屁股久久一区| 欧美国产精品人人做人人爱| xvideos国产精品| 91成人福利在线| 亚洲国产精品久久精品怡红院| 久久精品国产亚洲| 精品国产31久久久久久| 亚洲视频网站在线观看| 欧美丝袜一区二区三区| 亚洲成色777777在线观看影院| 日韩欧美中文字幕在线观看| 亚洲免费电影一区| 欧美激情视频在线观看| 国产精品亚洲аv天堂网| 中文字幕亚洲一区二区三区| 国产成人精品一区二区三区| 91免费在线视频网站| 国产精品v片在线观看不卡| 粗暴蹂躏中文一区二区三区| 91久久久亚洲精品| 久久全球大尺度高清视频| 国产欧美日韩精品在线观看| 久久久精品999| 日韩av免费在线播放| 色婷婷av一区二区三区在线观看| 超碰97人人做人人爱少妇| 欧美成人午夜激情| 91精品视频网站| 欧美成人精品影院| 亚洲国产美女久久久久| 久久久久久久国产精品视频| 欧美成人激情图片网| 国产精品久久久久av| 九九精品在线视频| 亚洲xxx视频| 日韩精品免费在线视频| 欧美在线日韩在线| 精品香蕉在线观看视频一| 伊人青青综合网站| 国产日韩欧美日韩大片| 日韩欧美国产骚| 欧美理论电影在线观看| 4388成人网| 国产精品第3页| 日韩精品中文字幕在线| 久久韩国免费视频| 欧美日韩国产在线| 少妇高潮久久77777| …久久精品99久久香蕉国产| 欧美—级a级欧美特级ar全黄| 91社区国产高清| 国产欧美日韩高清| 久久综合免费视频影院| 精品女厕一区二区三区| 亚洲精品www久久久久久广东| 国产精彩精品视频| 热久久美女精品天天吊色| 在线观看亚洲区| 久久99热这里只有精品国产| 国产精品电影观看| 久久视频在线视频| 亚洲日本欧美中文幕| 正在播放欧美一区| 欧美日韩中国免费专区在线看| 欧美激情伊人电影| 亚洲第一页在线| 国产香蕉一区二区三区在线视频| 精品久久久久久久久久ntr影视| 国产在线视频欧美| 成人女保姆的销魂服务| 2019亚洲日韩新视频| 欧美剧在线观看| 欧美高清第一页| 久久精品美女视频网站| 伊人久久久久久久久久| 久久影视电视剧免费网站清宫辞电视| 国产精品一区二区三区在线播放| 久久99精品久久久久久青青91| 久久久久久久国产精品视频| 国产视频久久久久久久| 国产精品丝袜白浆摸在线| 国产精品久久国产精品99gif| 不卡在线观看电视剧完整版| 欧美日韩国产第一页| 亚洲男人av电影| 日韩成人网免费视频| 亚洲第一区第二区| 国产亚洲成av人片在线观看桃| 亚洲一区二区三区视频播放| 欧美不卡视频一区发布| 国产午夜精品视频免费不卡69堂| 欧美中文字幕在线播放| 91色在线视频| 精品国产一区久久久| 日韩美女视频免费在线观看| 成人在线观看视频网站| 亚洲国内高清视频| 国产精品中文字幕在线观看| 97精品视频在线播放|