日本免费精品_最新日韩一区_亚洲视频一区在线_a在线视频观看_天天射夜夜骑_粉嫩av一区二区三区_欧美中日韩免费视频_综合图区欧美_国内精品美女在线观看_午夜精品久久久久久久男人的天堂

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

JVM結構基礎(一)

2019-11-18 14:06:29
字體:
來源:轉載
供稿:網友

  JVM結構基礎


前段時間由于研究原來廣為傳播的String和StringBuffer的性能問題,自己做了幾個小實驗并得出一些結論,但是從網友的反應來看那個研究并沒有起到應有的目的,而且網友也很中肯的提出了自己的意見并對實驗中的一些內容指出了其缺陷,針對他們的反應我又反編譯了代碼來進行對比,但是幾位網友仍然不是很信服,而且上次實驗的結果和反編譯得到的結論并不能完全吻合,因為反編譯代碼的對比基本上是基于語句的多少,因此這個這個對比也確實不能使人信服,但是這給我的下一步行動指引了方向:研究JVM指令和JVM結構,在對反編譯后的代碼有完全的理解才能給出可能使人信服的結論。

本文以及以后將要寫的一些文章就是我研究JVM規范的一些心得,我希望在和大家共同理解的基礎上進行我們下一輪的深入研究。

好,閑話少說,開始我們的正文。

JVM執行的對象就是大家非常熟悉的class文件,我們也稱為類文件,JVM規范定義的這個編譯完成的代碼文件(雖然并非強制要求是實際的文件)的格式非常的詳實,但是我們這里只說一些宏觀的內容,以后有機會再研究細節的內容吧。JVM要求的類文件的格式是和硬件和操作系統無關的一種二進制格式,它精確定義了類或者接口的表示,它甚至包含了字節順序這樣的細節,而字節順序在特定平臺的目標文件格式中一般都是固定的,不會進行說明。

JVM所支持的數據類型和java語言規范中定義的幾乎一樣,請注重是幾乎一樣!也就是原始類型和引用類型,他們可以被存儲在變量表中,也可以作為參數傳遞、被方法返回,更通常的就是成為操作的對象。為什么和Java語言規范中定義的不完全一樣呢?因為JVM中有一種Java語言所沒有的原始類型:返回地址類型(returnAddress type)。該類型是jsr, ret以及jsr_w指令需要使用到的,它的值是JVM指令的操作碼的指針,并且它的值是不能被運行中的程序所修改的。

另外需要提到的就是布爾類型的值,雖然在Java語言中它是完全獨立的值,但是在JVM中只提供了對它的有限支持,表現在:
沒有單獨的操作布爾類型的指令,源代碼中的布爾類型的操作在編譯以后是作為int類型的值進行操作的。
JVM直接支持布爾數組,newarray指令可以創建布爾數組,而它的訪問和修改操作卻是使用byte類型的數組的操作指令進行的:baload,bastore。(在JDK1.0,1,1以及1.2中,布爾數組被編碼為byte數組,每個元素是8位)
JVM用1代表true,用0代表false,編譯器將源代碼中的布爾類型映射為JVM中的int類型,而且必須和JVM的要求一致。

另外JVM規范中對于浮點類型的數據有大段的說明,我沒有怎么看,主要是討論JVM的浮點型和IEEE 754的關系的。

關于類型的另外一個需要提一下的是類型檢查。JVM期望幾乎所有的類型檢查已經在運行之前完成了(通常是由編譯器進行檢查的)而不用JVM自己來檢查。原始類型的值不需要被標記或者在運行時被檢查以確定他們的類型,同樣他們也不用和引用類型的值進行區分,區分工作是由JVM的指令集來完成的,JVM的指令集使用不同指令來區分它要操作的值的類型,例如iadd, ladd, fadd以及dadd是用于將兩個數字相加并產生數字類型結果的所有JVM指令,但是每個指令都是針對特定類型的,分別對應int, long, float以及double。

JVM包含對對象的顯式支持。類是動態分配的類實例或者是一個數組,JVM中的引用類型就是對一個對象的引用,引用類型的值可以想象為對象的指針,一個對象同時可能存在多個對它的引用,對象總是通過引用被操作、傳遞或者測試的。

對于引用類型,需要提及的一點就是關于null,它最初是沒有運行時類型的,但是它可以被轉換為任何類型,而且對于null,JVM并沒有要求任何具體的值與之對應。

說完上面這些,我們就開始進入我學習JVM時最想了解的部分了,大家可要打起精神哦。
JVM為運行一個程序定義了幾種數據區(Data Area),包括:pc寄存器、JVM堆棧、堆、方法區(Method Area)、運行時常量池(Runtime Constant Pool)以及本機方法堆棧(Native Method Stacks),這些數據區根據其生存期可以分為兩種,一種就是和JVM的生存期相同(包括堆和方法區),一種和線程的生存期相同(其它的),和JVM生存期相同的數據區在JVM啟動的時候被創建并在JVM退出的時候被銷毀,而和線程生存期相同的數據區是每個線程一個的,他們在線程創建的時候被創建,在線程被銷毀的時候被銷毀。

由于JVM可以同時支持運行多個線程,因此每個線程必然需要各自的PC(PRogram counter)寄存器,無論從什么角度講,每個JVM線程只能在一個時間只能執行一個方法,該方法也就是線程的當前方法,假如該方法不是本機方法,那么PC寄存器保存的就是當前指令(JVM的指令)的地址,假如是當前方法是本機方法,PC寄存器的值就沒有被定義。JVM的PC寄存器的大小足夠大,可以容納一個returnAddress類型或者特定平臺的本機指針。

每個JVM線程還擁有一個私有的JVM堆棧,它存儲幀(下一篇文章會講到)。JVM堆棧和像C這樣的傳統編程語言中的堆棧是類似的,它保存局部變量和部分結果,并且在方法調用和返回中也擔任一些職責。因為除了對幀的壓入和彈出操作外,對JVM堆棧不能直接進行操作,因此幀可能是在堆上分配的。假如一個線程中計算所需的JVM堆棧大于答應的大小,JVM會拋出StackOverflowError錯誤,假如JVM堆棧是可以動態伸縮的,假如需要擴展,但是又沒有足夠的內存可用或者沒有足夠的內存為一個新線程創建JVM堆棧,JVM會拋出OutOfMemoryError錯誤。

JVM只有一個為所有線程所共享的堆,所有的類實例和數組都是在堆中創建的。堆所存儲的對象被一個自動存儲治理系統回收(也就是我們所熟知的垃圾收集器(gc))。對象不能被顯式的釋放,JVM假設沒有特定類型的自動存儲治理系統,存儲治理技術可以根據實現者的系統需求進行選擇。假如計算所需的內存堆大于自動存儲治理系統可以使用的大小,JVM會拋出OutOfMemoryError錯誤。

JVM只有一個為所有的線程所共享的方法區,方法區類似傳統語言的已編譯代碼的存儲區或者UNIX進程的“文本”段。它存儲類結構,例如運行時常量池,成員和方法數據以及方法、構造方法的代碼(包括用于類和實例的初始化以及接口類型初始化的特定方法(這些特定方法以后會講到))。雖然從邏輯上講方法區是堆的一部分,但是JVM的簡單實現可以選擇不對方法區進行垃圾收集或者壓縮(以筆者的理解就是類不能進行卸載)。最新版本(第二版)的JVM規范沒有要求方法區的位置或者治理已編譯代碼的策略。假如方法區的內存不能滿足一個分配請求,JVM會拋出OutOfMemoryError。

運行時常量池是類文件中的常量池表的運行時表示,它包含幾種常量,范圍從編譯時就已知的數字常量到運行時必須進行解析的方法和成員引用。運行時常量池扮演的功能類似于傳統編程語言中的符號表(symbol table),但是它所包含的數據比典型的符號表更多。
每個運行時常量池時從JVM的方法區中分配的,對于特定方法或者接口的運行時常量池是JVM在創建類或者接口的時候創建的。
當創建一個類或者接口時,假如創建運行時常量池需要的內存比方法區中的可用內容更多的內存,JVM會拋出OutOfMemoryError。
關于常量池創建的更多內容以后可能會更具體的講解。

JVM的實現可能使用傳統的堆棧(更通常的講就是C棧)以支持本機方法(不是使用JAVA語言編寫的方法),本機方法堆棧也可以用于在像C語言這樣的語言中為JVM指令集實現解析器,對于不能加載本機方法以及自身不依靠傳統堆棧的JVM實現而言,它可以不提供本機方法堆棧,假如提供,本機方法堆棧通常在線程創建的時候為每個線程分配(以筆者的理解應該是需要使用本機方法的線程)。假如線程計算所需的內存比本機方法堆棧所答應的大,JVM會拋出StackOverflowError錯誤,假如本機方法堆棧可以動態伸縮,而當需要擴展的時候又沒有足夠的內存時,或者沒有足夠的內容用于創建一個本機方法堆棧,JVM會拋出OutOfMemoryError。

對于上面的這些數據區,JVM規范答應它們的大小是固定尺寸的,也可以是根據計算的需要動態伸縮的,假如是固定尺寸的,其尺寸可以在創建時自主選擇。JVM的實現可以給程序員或者用戶提供控制JVM堆棧的初始大小的方法,同樣,在動態伸縮的情況下可以控制最大大小和最小大小,并且它們所使用的內存空間可以不是連續的。

上一篇:把對象作為參數

下一篇:JXTA概念介紹

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
日韩视频在线观看视频| 日韩精品一二三四区| 欧美三级日韩三级| 国产中文在线播放| 国产一二三四| 蜜臀91精品国产高清在线观看| 免费一级欧美在线观看视频| 国产乱码在线观看| 欧美另类久久久品| 欧美日韩视频不卡| 欧美日韩国产免费| 国产福利一区二区| 国产一级在线播放| 日韩欧美一二三| 色屁屁一区二区| 韩国av一区二区| 中文字幕 亚洲一区| a天堂在线资源| 亚洲开心激情| 欧美日韩成人综合| 久精品在线观看| 国产欧美三级| 麻豆精品视频入口| 伊人网站在线| 日韩中文在线视频| 日韩免费看网站| 亚洲黄在线观看| 久久电影国产免费久久电影| 国产午夜精品久久| 欧美亚洲另类制服自拍| 国产一级久久久| a级在线免费观看| 91精品久久久久| 欧美中文字幕在线视频| 中文字幕日韩国产| 国产99亚洲| 欧美色视频一区二区三区在线观看| 天天摸日日摸狠狠添| 亚洲第一网中文字幕| 国产不卡在线观看视频| 亚洲男女av一区二区| 欧美日韩国产系列| 91精品视频免费在线观看| 国产一级视频| 国产激情99| 日韩在线不卡| 欧美综合精品| 亚洲欧美韩国综合色| 日韩精品视频免费播放| www.日韩免费| 精品久久久91| 国产导航在线| 三级网站免费观看| 玖玖在线免费视频| 国产一区高清视频| wwwwww国产| 在线视频三区| 91精品国产91| 精品日韩视频在线观看| 亚洲一区视频在线观看视频| 亚洲高清视频一区| 中文字幕在线视频第一页| 久草亚洲一区| 色99中文字幕| 欧美另类久久久品| 欧美 亚洲 精品 三区| www中文字幕| 一本一道综合狠狠老| 免费在线观看国产黄| 国产精久久久久| 欧美日韩精品免费看| 亚洲乱码中文字幕| 中文字幕日韩免费视频| 欧美乱大交xxxxx免费| 91精品国产综合久久精品app | 中文字幕第一页在线播放| 日韩视频在线观看视频| 国产一级片播放| 日韩精品中文在线观看| 视频一区不卡| 欧美 日韩 国产在线| 在线视频观看日韩| 亚洲视频中文字幕| 最新中文字幕在线| 国产欧美日产一区| 欧美日韩精品免费| 日韩在线视频在线观看| 一区二区三区四区五区视频在线观看| 国产95在线|亚洲| 精品色蜜蜜精品视频在线观看| 国产不卡精品在线| 欧美久久一二三四区| 亚洲福利在线视频| 亚洲黄色在线观看| 日韩视频不卡中文| 欧美日韩国产不卡在线看| 欧美色欧美亚洲高清在线视频| 黄色国产网站在线播放| 日韩精品视频在线免费观看| 亚洲第一视频在线观看| 精品日韩在线播放| 欧美日中文字幕| 亚洲一级特黄| 欧美日韩中文字幕综合视频| 午夜精品一区二区三区免费视频| 国产日韩中文在线| 欧美国产三级| 国产视频中文字幕在线观看| 欧美日韩午夜在线| 色99中文字幕| 亚洲国产福利| 国产欧美综合视频| 久久精品99国产国产精| 韩国av一区二区| wwwav在线播放| 一区二区三区精品99久久| 视频一区不卡| 国产日韩精品久久久| av三级在线播放| 国产欧美久久久| 日韩精品视频在线看| 亚洲素人一区二区| 亚洲第一中文字幕| 欧美xxxx中国| 欧美日韩乱国产| 久99久视频| 国产亚洲一区字幕| 国产网站欧美日韩免费精品在线观看 | 天天综合天天综合| 一区二区三区视频网站| 国产一二三四| 欧美亚洲国产激情| 欧美日韩国产在线| 日韩精品视频在线播放| 中文字幕在线欧美| 精品视频—区二区三区免费| 日韩免费视频一区二区| 国产在线观看黄色| 精品欧美久久久| 韩国一区二区av| 亚洲欧洲日韩精品在线| 中文字幕在线视频日韩| 欧美婷婷久久| 日韩福利视频导航| 久久精品国产91精品亚洲| 亚州黄色一级| 日韩欧美一级视频| 一区二区三区在线播放欧美| 7799精品视频天天看| 国产高清视频一区二区| 国产 欧美 在线| 亚洲三级免费看| 精品国产不卡一区二区| 首页国产欧美久久| 日韩欧美国产网站| 欧美日韩性视频在线| 久久精品电影| 欧美中文字幕在线视频| 日韩在线小视频| 国产激情三区| 欧美日韩激情在线一区二区三区| 日韩欧美亚洲国产一区| 精品国产欧美| 欧美日韩国产专区| 欧美 日韩 国产 在线观看| 欧洲精品二区| www.91香蕉视频| 一区二区三区高清在线| 在线三级av| 91精品国产色综合久久久蜜香臀| 欧美三级中文字幕在线观看| 亚洲乱码中文字幕| 国产导航在线| 亚洲第一中文字幕在线观看| 色偷偷一区二区三区| 日韩欧美国产视频| 日韩视频国产视频| 91精品国产91| 国产乱码在线观看| 91精品xxx在线观看| 中文字幕欧美亚洲| 国产黄色在线播放| 欧美日韩国产亚洲一区| 麻豆精品视频入口| 亚洲a一级视频| 中文精品在线| 国产日韩精品在线看| 日韩欧美中文字幕精品| 国产丝袜一区二区| 国产高潮久久久| 在线日韩中文字幕| 日韩国产一区| 午夜亚洲福利| 日韩午夜黄色| 久久99精品国产| 91精品国产乱码久久蜜臀| 国产小视频在线观看| 日韩视频在线观看视频| 久久久水蜜桃| 日韩中文字幕在线视频播放| 日韩高清在线不卡| 亚洲三级av| 国产福利一区二区精品秒拍| 美国av一区二区| 最近中文字幕在线中文视频| 欧洲一级精品| 日韩精品手机在线| 亚洲精品中文字幕乱码三区不卡| 韩国v欧美v日本v亚洲| wwwav91com| 久久电影国产免费久久电影| 91精品国产综合久久香蕉最新版| 国产偷久久久精品专区| 在线免费播放av| 欧美日韩国产高清| 午夜亚洲福利| 国产成人精品网址| 91久久久精品| 亚洲三级国产| 亚洲一区视频在线观看视频| 在线不卡一区二区| 成人一区二区不卡免费| 欧美日韩久久不卡| 日韩欧美国产高清| 欧美国产亚洲一区| 亚洲免费视频一区| 久久精品久久精品国产大片| 一二三区精品视频| 日韩欧美亚洲日产国| 亚洲.国产.中文慕字在线| xxxcom在线观看| 日韩高清不卡一区| 国产亚洲视频中文字幕视频| 欧美亚洲专区| 中文字幕亚洲在| 一区二区三区在线免费 | 蜜臀久久精品| 日韩欧美中文字幕公布| 国产天堂素人系列在线视频| 首页国产欧美久久| 精品人妻二区中文字幕| 最近中文字幕在线中文高清版| 亚洲高清在线免费| 国产欧美日韩视频| 欧美日韩亚洲视频| 精品国产欧美成人夜夜嗨| 国产视频一区二| 精品福利二区三区| 中文字幕日韩亚洲| 99综合精品久久| 久本草在线中文字幕亚洲欧美| 国产午夜精品视频| 99国内精品| 日韩中文字幕亚洲| 精品久久在线观看| 一区二区三区高清在线| 久久精品99国产国产精| 午夜精品一区二区三区视频免费看| 欧美日韩尤物久久| 一区二区91| 国产综合成人久久大片91| 99视频在线看| 中文字幕日韩在线视频| 欧美黄页在线免费观看| 日韩高清不卡一区| 亚洲一区中文在线| av午夜在线| 在线精品观看| 日韩午夜中文字幕| 亚洲图片小说综合| 欧美日韩国产专区| 欧美国产中文| 亚洲欧美久久久| 亚洲一区在线观看免费| 国产性一级片| 日韩欧美在线第一页| 99pao成人国产永久免费视频| 国产欧美日韩精品在线观看| 国产乱国产乱300精品| 免费看黄资源大全高清| 91精品视频观看| 欧美午夜精品在线| 在线免费播放av| 亚洲综合日韩中文字幕v在线| 日韩视频国产视频| 中文字幕在线观看欧美| 精品人妻一区二区三区视频| 亚洲一区中文| 亚洲专区一二三| 欧美日韩国产91| 日韩国产成人| 视频一区中文字幕国产| 亚洲一区中文字幕在线观看| 日韩色在线观看| 成人a在线视频免费观看| 精品不卡一区二区| 亚洲一级影院| 久久综合九色欧美综合狠狠| 亚洲欧美久久234| 精品一二三区视频| 日韩免费精品视频| 日韩一级免费在线观看| 91久久在线| 91精品国产91久久久久久不卡| 欧美在线视频二区| 日韩一级网站| 日韩亚洲一区在线| 久久婷婷国产| 亚洲二区自拍| 97最新国自产拍视频在线完整在线看 | 一区二区高清视频| 亚洲一区中文字幕在线| 国产一区三区三区| 中文字幕视频一区二区三区久| 国产激情在线播放| 国产黄色片中文字幕| 国产在线视频一区二区| 黄色一区二区在线观看| 亚洲 欧美综合在线网络| 国产123在线| 在线视频1区2区| 日韩精品视频在线| 欧美日韩国产一级片| 在线观看免费国产小视频| 午夜av一区二区| 亚洲综合在线不卡| 午夜亚洲一区| 国产一级久久久| 欧美日韩在线播放三区四区| 中文字幕一区不卡| 欧美日韩免费精品| 国产成人精品免费网站| 国产手机精品视频| 五月天久久比比资源色| 国产免费播放一区二区| 亚洲一区在线观看网站| 99国内精品| 日韩欧美国产午夜精品| 中文字幕亚洲乱码| a视频免费在线观看| 国产日韩精品在线| 日韩视频在线免费看| 亚洲视频在线观看日本a | 欧美日韩国产中字| 亚洲福利在线观看| 日韩一级在线视频| 日韩美女视频一区二区在线观看| 日韩一级中文字幕| 亚洲а∨精品天堂在线| 91精品久久久久| 中文字幕久久精品| 日韩中文在线中文网三级| 中文在线不卡视频| 欧美高清一级片在线| 国产在线精品日韩| 日韩精品视频在线看| 精品网站999www| 欧美久久在线观看| 久久久99久久| 欧美 日韩 国产在线| 国产羞羞视频在线播放| 91精品国产高清91久久久久久| av三级在线播放| 精品九九久久| 亚洲大片精品永久免费| 亚洲中文字幕在线一区| 一区二区三区精品99久久| 久久视频免费看| 中文字幕在线看视频国产欧美| 日韩免费看网站| 蜜臀91精品国产高清在线观看| 91精品国产91综合久久蜜臀| 日韩av不卡在线观看| av最新网址| 国产1区在线| 亚洲一级在线| 在线精品日韩| 日韩欧美字幕| 蜜桃视频一日韩欧美专区| 日韩精品视频在线播放| 国产成人精品999| 日韩免费精品视频| 日韩精品视频在线观看视频| 久久精品99久久久久久久久| 免费精品国产自产拍在| 精品久久在线| 一区二区三区精品99久久| 色一区在线观看| 日韩在线 中文字幕| 欧美 亚洲 精品 三区| 亚洲国产欧美久久| 日本精品免费观看高清观看| 一区二区三区四区五区视频在线观看| 日本免费在线视频不卡一不卡二| 亚洲三级免费看| 欧美日韩在线观看首页| 91精品国产综合久久香蕉的特点 | 久久精品国产91精品亚洲| 一区二区日韩免费看| 在线观看精品国产|