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

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

JVM(JAVA虛擬機介紹)

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

  JVM(java虛擬機介紹)
來源:IT網絡學院 2003年3月19日10:21

Java虛擬機(JVM)是可運行Java代碼的假想計算機。只要根據JVM規格描述將解釋器移植到特定的計算機上,就能保證經過編譯的任何Java代碼能夠在該系統上運行。本文首先簡要介紹從Java文件的編譯到最終執行的過程,隨后對JVM規格描述作一說明。

  一.Java源文件的編譯、下載、解釋和執行

  Java應用程序的開發周期包括編譯、下載、解釋和執行幾個部分。Java編譯程序將Java源程序翻譯為JVM可執行代碼?字節碼。這一編譯過程同C/C++的編譯有些不同。當C編譯器編譯生成一個對象的代碼時,該代碼是為在某一特定硬件平臺運行而產生的。因此,在編譯過程中,編譯程序通過查表將所有對符號的引用轉換為特定的內存偏移量,以保證程序運行。Java編譯器卻不將對變量和方法的引用編譯為數值引用,也不確定程序執行過程中的內存布局,而是將這些符號引用信息保留在字節碼中,由解釋器在運行過程中創立內存布局,然后再通過查表來確定一個方法所在的地址。這樣就有效的保證了Java的可移植性和安全性。

  運行JVM字節碼的工作是由解釋器來完成的。解釋執行過程分三部進行:代碼的裝入、代碼的校驗和代碼的執行。裝入代碼的工作由"類裝載器"(class loader)完成。類裝載器負責裝入運行一個程序需要的所有代碼,這也包括程序代碼中的類所繼續的類和被其調用的類。當類裝載器裝入一個類時,該類被放在自己的名字空間中。除了通過符號引用自己名字空間以外的類,類之間沒有其他辦法可以影響其他類。在本臺計算機上的所有類都在同一地址空間內,而所有從外部引進的類,都有一個自己獨立的名字空間。這使得本地類通過共享相同的名字空間獲得較高的運行效率,同時又保證它們與從外部引進的類不會相互影響。當裝入了運行程序需要的所有類后,解釋器便可確定整個可執行程序的內存布局。解釋器為符號引用同特定的地址空間建立對應關系及查詢表。通過在這一階段確定代碼的內存布局,Java很好地解決了由超類改變而使子類崩潰的問題,同時也防止了代碼對地址的非法訪問。

  隨后,被裝入的代碼由字節碼校驗器進行檢查。校驗器可發現操作數棧溢出,非法數據類型轉化等多種錯誤。通過校驗后,代碼便開始執行了。

  Java字節碼的執行有兩種方式:
  1.即時編譯方式:解釋器先將字節碼編譯成機器碼,然后再執行該機器碼。
  2.解釋執行方式:解釋器通過每次解釋并執行一小段代碼來完成Java字節碼程 序的所有操作。
  通常采用的是第二種方法。由于JVM規格描述具有足夠的靈活性,這使得將字節碼翻譯為機器代碼的工作

  具有較高的效率。對于那些對運行速度要求較高的應用程序,解釋器可將Java字節碼即時編譯為機器碼,從而很好地保證了Java代碼的可移植性和高性能。

  二.JVM規格描述

  JVM的設計目標是提供一個基于抽象規格描述的計算機模型,為解釋程序開發人員提很好的靈活性,同時也確保Java代碼可在符合該規范的任何系統上運行。JVM對其實現的某些方面給出了具體的定義,非凡是對Java可執行代碼,即字節碼(Bytecode)的格式給出了明確的規格。這一規格包括操作碼和操作數的語法和數值、標識符的數值表示方式、以及Java類文件中的Java對象、常量緩沖池在JVM的存儲映象。這些定義為JVM解釋器開發人員提供了所需的信息和開發環境。Java的設計者希望給開發人員以隨心所欲使用Java的自由。
  
  JVM定義了控制Java代碼解釋執行和具體實現的五種規格,它們是:
  JVM指令系統
  JVM寄存器
  JVM棧結構
  JVM碎片回收堆
  JVM存儲區


  2.1JVM指令系統  

  JVM指令系統同其他計算機的指令系統極其相似。Java指令也是由 操作碼和操作數兩部分組成。操作碼為8位二進制數,操作數進緊隨在操作碼的后面,其長度根據需要而不同。操作碼用于指定一條指令操作的性質(在這里我們采用匯編符號的形式進行說明),如iload表示從存儲器中裝入一個整數,anewarray表示為一個新數組分配空間,iand表示兩個整數的"與",ret用于流程控制,表示從對某一方法的調用中返回。當長度大于8位時,操作數被分為兩個以上字節存放。JVM采用了"big endian"的編碼方式來處理這種情況,即高位bits存放在低字節中。這同 Motorola及其他的RISC CPU采用的編碼方式是一致的,而與Intel采用的"little endian "的編碼方式即低位bits存放在低位字節的方法不同。
  
  Java指令系統是以Java語言的實現為目的設計的,其中包含了用于調用方法和監視多先程系統的指令。Java的8位操作碼的長度使得JVM最多有256種指令,目前已使用了160多種操作碼。
  
  2.2JVM指令系統


所有的CPU均包含用于保存系統狀態和處理器所需信息的寄存器組。假如虛擬機定義較多的寄存器,便可以從中得到更多的信息而不必對棧或內存進行訪問,這有利于提高運行速度。然而,假如虛擬機中的寄存器比實際CPU的寄存器多,在實現虛擬機時就會占用處理器大量的時間來用常規存儲器模擬寄存器,這反而會降低虛擬機的效率。針對這種情況,JVM只設置了4個最為常用的寄存器。它們是:
  pc程序計數器
  optop操作數棧頂指針
  frame當前執行環境指針
  vars指向當前執行環境中第一個局部變量的指針
所有寄存器均為32位。pc用于記錄程序的執行。optop,frame和vars用于記錄指向Java棧區的指針。
  
  2.3JVM棧結構


  作為基于棧結構的計算機,Java棧是JVM存儲信息的主要方法。當JVM得到一個Java字節碼應用程序后,便為該代碼中一個類的每一個方法創建一個棧框架,以保存該方法的狀態信息。每個棧框架包括以下三類信息:
  局部變量
  執行環境
  操作數?! ?br />  
  局部變量用于存儲一個類的方法中所用到的局部變量。vars寄存器指向該變量表中的第一個局部變量。
  執行環境用于保存解釋器對Java字節碼進行解釋過程中所需的信息。它們是:上次調用的方法、局部變量指針和操作數棧的棧頂和棧底指針。執行環境是一個執行一個方法的控制中心。例如:假如解釋器要執行iadd(整數加法),首先要從frame寄存器中找到當前執行環境,而后便從執行環境中找到操作數棧,從棧頂彈出兩個整數進行加法運算,最后將結果壓入棧頂。
操作數棧用于存儲運算所需操作數及運算的結果。
  
  2.4JVM碎片回收堆


  Java類的實例所需的存儲空間是在堆上分配的。解釋器具體承擔為類實例分配空間的工作。解釋器在為一個實例分配完存儲空間后,便開始記錄對該實例所占用的內存區域的使用。一旦對象使用完畢,便將其回收到堆中。
在Java語言中,除了new語句外沒有其他方法為一對象申請和釋放內存。對內存進行釋放和回收的工作是由Java運行系統承擔的。這答應Java運行系統的設計者自己決定碎片回收的方法。在SUN公司開發的Java解釋器和Hot Java環境中,碎片回收用后臺線程的方式來執行。這不但為運行系統提供了良好的性能,而且使程序設計人員擺脫了自己控制內存使用的風險。
  
  2.5JVM存儲區


JVM有兩類存儲區:常量緩沖池和方法區。常量緩沖池用于存儲類名稱、方法和字段名稱以及串常量。方法區則用于存儲Java方法的字節碼。對于這兩種存儲區域具體實現方式在JVM規格中沒有明確規定。這使得Java應用程序的存儲布局必須在運行過程中確定,依靠于具體平臺的實現方式。
  
  JVM是為Java字節碼定義的一種獨立于具體平臺的規格描述,是Java平臺獨立性的基礎。目前的JVM還存在一些限制和不足,有待于進一步的完善,但無論如何,JVM的思想是成功的。

  對比分析:假如把Java原程序想象成我們的C++原程序,Java原程序編譯后生成的字節碼就相當于C++原程序編譯后的80x86的機器碼(二進制程序文件),JVM虛擬機相當于80x86計算機系統,Java解釋器相當于80x86CPU。在80x86CPU上運行的是機器碼,在Java解釋器上運行的是Java字節碼。
 
  Java解釋器相當于運行Java字節碼的“CPU”,但該“CPU”不是通過硬件實現的,而是用軟件實現的。Java解釋器實際上就是特定的平臺下的一個應用程序。只要實現了特定平臺下的解釋器程序,Java字節碼就能通過解釋器程序在該平臺下運行,這是Java跨平臺的根本。當前,并不是在所有的平臺下都有相應Java解釋器程序,這也是Java并不能在所有的平臺下都能運行的原因,它只能在已實現了Java解釋器程序的平臺下運行。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲国产另类久久精品| 欧美性猛交xxxx| 久久在线免费视频| 日韩欧美亚洲综合| 日本在线观看天堂男亚洲| 欧美午夜片在线免费观看| 17婷婷久久www| 日本一本a高清免费不卡| 98精品国产高清在线xxxx天堂| 午夜精品久久久久久99热软件| 欧美激情一区二区三区久久久| 日韩电影中文字幕在线观看| 最新中文字幕亚洲| 色综合亚洲精品激情狠狠| 久久亚洲一区二区三区四区五区高| 日韩最新中文字幕电影免费看| 日韩久久精品电影| 国产日韩av在线播放| 色av吧综合网| 欧美日韩国产丝袜美女| 国产精品美女免费视频| 精品一区二区三区电影| 欧美精品videosex牲欧美| 欧美成人免费大片| 成人在线视频网站| 亚洲欧洲偷拍精品| 欧美老少配视频| 精品国产一区二区三区久久| 成人做爽爽免费视频| 亚洲人精品午夜在线观看| 成人情趣片在线观看免费| 日韩精品中文在线观看| 久久精品国产96久久久香蕉| 色综合久久久久久中文网| 亚洲国产精久久久久久久| 亚洲老头老太hd| 一区二区三区视频免费在线观看| 欧美电影免费观看电视剧大全| 91精品免费视频| 国产日韩欧美91| 久久精品中文字幕一区| 成人美女免费网站视频| 国内精品久久久| 中文欧美在线视频| 久久色免费在线视频| 久久久久久久久久久网站| 68精品国产免费久久久久久婷婷| 一区二区欧美在线| 国产精品久久久久7777婷婷| 成人h猎奇视频网站| 久久久精品国产亚洲| 国产精品稀缺呦系列在线| 亚洲精品久久久久中文字幕欢迎你| 尤物yw午夜国产精品视频| 精品国产依人香蕉在线精品| 精品视频久久久久久久| 亚洲色图第三页| 成人在线激情视频| 欧美精品久久一区二区| 亚洲最大的av网站| 国产精品99免视看9| 久久男人的天堂| 日韩免费观看高清| 91美女福利视频高清| 奇米影视亚洲狠狠色| 97精品视频在线播放| 精品国产自在精品国产浪潮| 亚洲综合在线小说| 久久国产精品99国产精| 亚洲精品一区二区三区婷婷月| 精品久久久久久久久久国产| 亚洲一区二区三区久久| 欧洲美女7788成人免费视频| 亚洲成人动漫在线播放| 91av免费观看91av精品在线| 成人网址在线观看| 亚洲国产精品va在线看黑人| 国产手机视频精品| 久久综合久中文字幕青草| 在线观看国产精品淫| 日韩av免费在线播放| 欧美黑人国产人伦爽爽爽| 亚洲欧洲视频在线| 久久免费视频在线观看| 国产午夜精品理论片a级探花| 91久久精品美女高潮| 亚洲一区二区三区xxx视频| 国产精品久久久久久久久久新婚| 久久国内精品一国内精品| 成人激情视频小说免费下载| 国产精品一区二区三区免费视频| 国产成人啪精品视频免费网| 国产亚洲欧美日韩美女| 亚洲国产欧美在线成人app| 亚洲а∨天堂久久精品喷水| 精品成人在线视频| 最近2019中文字幕大全第二页| 亚洲精品91美女久久久久久久| 欧美精品999| 在线视频精品一| 97视频免费观看| 国产美女被下药99| 久久综合久久美利坚合众国| 国产精品成人aaaaa网站| 亚洲国产天堂久久综合| 国产视频亚洲视频| 在线观看欧美www| 国产激情999| 欧美中文字幕视频| 国产精品久久久久久av福利软件| 亚洲free性xxxx护士白浆| 欧美激情视频一区| 久久久久久国产精品美女| 欧美国产极速在线| 精品在线欧美视频| 欧美在线视频观看免费网站| 91av在线免费观看视频| 中文字幕不卡av| 国产精品久久久久av免费| 亚洲小视频在线| 精品亚洲一区二区三区在线播放| 国产精品久久久久久久久免费| 91欧美精品成人综合在线观看| 久久久久久久久久久久久久久久久久av| 97精品国产aⅴ7777| 欧美大全免费观看电视剧大泉洋| 狠狠躁夜夜躁人人爽天天天天97| 亚洲精品一区在线观看香蕉| 68精品久久久久久欧美| 日韩有码在线电影| 91在线观看免费高清完整版在线观看| 日本视频久久久| 亚洲精品久久久久久久久| 午夜美女久久久久爽久久| 日本欧美中文字幕| wwwwwwww亚洲| 国产精品99久久久久久人| 欧美成人免费视频| 久久av红桃一区二区小说| 久久久999成人| 黄色成人av在线| 欧美最猛黑人xxxx黑人猛叫黄| 国产日韩综合一区二区性色av| 久久久噜噜噜久久久| 亚洲国产高清高潮精品美女| 精品国产成人在线| 欧美激情欧美激情| 成人免费网站在线看| 国模叶桐国产精品一区| 最好看的2019年中文视频| 欧美激情一区二区三级高清视频| 国产成人小视频在线观看| 精品国产一区二区三区在线观看| 精品久久久久久久久中文字幕| 国产视频精品在线| 国产成人精品久久亚洲高清不卡| 最近的2019中文字幕免费一页| 久久视频这里只有精品| 91精品久久久久久久久久另类| 91欧美精品午夜性色福利在线| 中文字幕在线观看日韩| 亚洲激情中文字幕| 欧美精品www在线观看| 91精品久久久久久久久青青|