亚洲综合在线一区二区三区-日韩超碰人人爽人人做人人添-麻豆国产精品久久人妻-无码人妻丰满熟妇啪啪-天堂精品一区二区三区-99久久综合狠狠综合久久aⅴ

×
新網 > 虛擬主機 > 正文

java虛擬機的十年

  • 作者:新網
  • 來源:新網
  • 瀏覽:100
  • 2018-05-12 10:48:54

當我們說到“Java”這個詞的時候,指的是四個相互關聯的概念:Java語言、Java API、Java Class文件格式、Java虛擬機。 “虛擬”,是一種隔離物理資源與邏輯資源的手段。Java虛擬機的“虛擬”,則是用來隔離物理機器、底層操作系統與Java語言規范實現的手段。

   當我們說到“Java”這個詞的時候,指的是四個相互關聯的概念:Java語言、Java API、Java Class文件格式、Java虛擬機。 “虛擬”,是一種隔離物理資源與邏輯資源的手段。Java虛擬機的“虛擬”,則是用來隔離物理機器、底層操作系統與Java語言規范實現的手段。

  雖然Java是一種面向對象的語言,我們平時大量使用的,是對象間的多態、組合(Composition)、委派(Delegation),但當我們討論虛 擬機的時候,我們看見的基本概念卻是“棧(Stack)”和“堆(Heap)”。根據馮諾依曼的“存儲計算”模型,所有的代碼都保存在代碼空間中,隨著程 序計數器指針的變化進行程序的執行、跳轉。Java虛擬機中沒有寄存器的概念,方法調用是采用“棧”進行的,這是一種安全、簡潔的方法。
13171616kz20.jpg
  Java 虛擬機通過類裝載器支持對類的隔離,這也是Java實現安全性的基礎。每個類都具有自己的命名空間,在具有不同安全級別的沙箱中運行,因此不會產生低安全 級別的代碼來越權訪問高級別代碼的機會。類裝載器的出現是Java虛擬機與大部分用C實現的虛擬機的顯著不同之處。
  Java虛擬機的另外一個顯著 特點就是實現了自動的垃圾收集。在往常,寫程序的時候要牢記對象之間的關聯,在每個程序塊中假若申請了對象空間,就必須在出口釋放掉,方法調用往往同時也 就是對象的邊界。而自動垃圾收集帶給開發者的最大好處,就是可以非常方便地從整體上把系統的對象組織成一張對象圖,只需往這張圖中添加對象,維護對象之間 的關聯,卻不需要自己做復雜的清掃工作。正是有了這種思維單純的對象圖的支持,OR Mapping(關系數據庫與對象映射)技術在最近得以大行其道,設計模式也更容易被Java群體所接受。
  虛擬機的優化
  1995 年第一代的Java出臺之時,其虛擬機執行是依靠“字節碼解釋器(Byte Code Interceptor)”的,也就是說每條指令都由虛擬機來當場解釋執行,這造成速度令人抓狂地緩慢。更有甚者有人開始總結許多的“速度優化經驗”,比 如說:“盡量把所有的代碼都放在較大的方法中執行”與“少用接口”等等,這完全與Java語言的設計目的背道而馳,現在看起來是多么可笑的奇談怪論,當時 卻是很多程序員津津樂道的經驗之談。無他,Java本身執行太慢了。Java生命的前十分之三就是如此緩慢地渡過的。
  于是,Sun的工程師開始拼 命想著提高執行速度。JIT靜態編譯器的出現是在1996年十月,Sun放出了第一個編譯器。JIT編譯器在每段代碼執行前進行編譯,編譯的結果為本地靜 態機器碼,執行速度有了質的提高。Symantec公司當時憑借其傲人的JIT編譯器,在整個Java界受到熱烈的追捧。在其后的1998年,Java 1.2發布的時候,附帶了JIT編譯器,從此Java的使用者終于可以拋開上面說的那些奇怪的“速度優化經驗”了。
  JIT靜態編譯器雖然可以解決 一些問題,但是性能仍然和C/C++有很大的差距。對一段程序而言,一名優秀的程序員是如何來改進運行速度的呢?首先,他不會傻到把所有的代碼都來優化, 他會觀察、思考到底哪段代碼對整體性能影響最大?然后集中精力來優化這一段代碼。按照經驗,整個程序 10%-20%的代碼,會占據 80%-90%的運行時間。用這種方法,在同樣的時間、付出同樣程度的努力后,這名優秀的程序員使整個程序的性能得到了很大程度的優化。HotSpot引 擎,就是模仿人工的這種方法進行優化的。在程序運行的開始,Java代碼仍然解釋執行,但HotSpot引擎開始進行采樣(Profiling)。根據采 樣的結果,決定某段程序是占用較多運行時間的,就認為它是“HotSpot”,它也就是目前程序的瓶頸, 引擎開始啟動一個單獨的線程進行優化。因為不象原始的 JIT編譯器那樣無差別的編譯所有代碼,HotSpot引擎可以集中精力來對HotSpot代碼進行深度優化,這樣這部分代碼執行起來更加迅捷。之前的靜 態編譯器只能按照預定的策略進行編譯優化,而HotSpot引擎的優化是基于采樣的結果的,因此這種方法對所有的應用程序都有效。1999年3月27日, Sun放出了第一個HotSpot引擎。在隨后的2000年5月的JDK 1.3中,包含了HotSopt引擎,這也使1.3成了一個具有里程碑意義的發行版本。到這里,Java的十年生命,已經過去了一半。
  HotSpot 代表的是一種動態編譯的技術。對Java這種大量使用委派、組合等面向對象特性的程序來說,動態編譯比起靜態編譯來有顯著的優勢。比如Method Inlining。方法的調用是一個很耗時的操作,假若可以把方法調用直接內嵌到調用者的代碼中,就可以節省大量的時間, 這被稱為“Method Inlining”。因為涉及到類的重載,靜態優化很難確切知道哪些屬性、方法被重載,因此很難對method進行合并,只好在方法內部進行靜態編譯,假 若每個方法都很小,靜態優化能起到的作用也就比較小。而動態編譯因為可以完全隨時掌握類的重載情況,就可以把相關的方法合并進行深度優化。現代的Java 程序,特別是在設計模式教育得到普及之后,大量使用類的繼承、委派,形成了很多短小的方法,動態編譯的優勢就更加明顯。
  自從出現了HotSpot之后,整個Java界為之一振。
最 近的五年,就是繼續優化的五年。繼續進行優化的方法有幾條路,一是研究新的采樣算法。因為采樣關系到不同的優化策略,會對整體性能有比較大的影響。二是研 究深度優化的方法。三是研究垃圾收集的算法。垃圾收集會帶來程序短暫的停頓,這會帶來負面的用戶體驗。于是,如何提高垃圾收集的效率,減少延遲,出現了五 花八門的算法,比如漸進式收集、火車算法等。在多處理器的時候,如何利用多處理器進行并行收集也是研究的一個熱點。
   首先要 提到的,毫無疑問是Sun的虛擬機。作為大眾心目中的“官方實現”,Sun擁有最大的用戶群,并且擁有“兼容基準”的地位,其他虛擬機都必須要考慮和 Sun虛擬機的兼容性問題。比如 JRocket就會在某些特殊情況下表現出和Sun不同的特性,可能對程序運行有影響。不過Sun也的確沒有讓廣大用戶失望,雖然在早期性能比不上 Symantec,后來在1.2 的時候性能又被IBM超越,但Sun一直在努力革新,特別是 1.4.2之后,性能有了長足的進步。雖然JDK 1.5的虛擬機在性能上沒有什么提高,但是增強了穩定性,據說修改了8000處bug,真是讓人汗流不止。原來我們在1.4.2下面一直在享受這么多 bug啊。
  其次是老牌勁旅IBM。IBM的JDK在1.3的時代創下了最好的性能記錄,從此樹立了高端形象。特別是在其WebSphere產品中得到了很好的評價。其JDK也是最早支持64bit的JDK之一。到了現在,IBM JDK在高端仍然是和BEA可以一拼的。
  然 后是后起之秀,BEA的JRocket。說到BEA突然在JVM領域一夜之間異軍突起,多少讓人有些瞠目,不過它采取的戰略特別簡單:自己沒有,索性花錢 買了在此領域深有研究的JRocket,在前面加上BEA的標志就可以了。JRocket瞄準高端服務器市場,在多處理器環境下有不俗的表現。
  除 此之外,還有幾個開放源代碼的JVM值得一提。首先就是大名鼎鼎的JikesRVM。說起其大名,大多數人都知道Jikes編譯器是 IBM開發的,效率比同等的javac編譯器高得多,很多開發者都使用Jikes編譯器來取代javac。而JikesRVM則是IBM開源出來的一整套 虛擬機技術,包含了JIT,GC的完整實現,在其網站上也有眾多的論文,實在是想要深入研究JVM者的絕佳資源(https://jikesrvm.sourceforge.net)。
  Kaffe是一個老牌的JVM,不過現在已經很少聽到了。作者撰寫此文時,www.kaffe.org網站已經沒有響應,也不知道現在的情況如何了。
  GNU則有兩個計劃:GCJ和GNU classpath。GNU classpath是一個底層實現,而GCJ是支持java的預編譯器。
  以上就是小編總結的虛擬的歷史。

免責聲明:本文內容由互聯網用戶自發貢獻自行上傳,本網站不擁有所有權,也不承認相關法律責任。如果您發現本社區中有涉嫌抄襲的內容,請發送郵件至:operations@xinnet.com進行舉報,并提供相關證據,一經查實,本站將立刻刪除涉嫌侵權內容。

免費咨詢獲取折扣

Loading
主站蜘蛛池模板: 国产亚洲精品久久久999蜜臀 | 欧美日韩区一区二| 亲胸揉屁股膜下刺激视频免费网站| 桃花综合久久久久久久久久网| 亚洲第一区欧美国产不卡综合| 亚洲国产日韩a在线乱码| 精品人妻少妇一区二区三区 | 久久成人国产精品免费软件| 国产精品欧美成人| 国产精品毛片完整版视频| 亚洲欧洲日韩在线电影| 人妻互换 综合| 色欲狠狠躁天天躁无码中文字幕| 女人被爽到呻吟gif动态图视看| 毛片内射久久久一区| 久久精品国产一区二区三区不卡| 好爽…又高潮了免费毛片| 亚洲愉拍自拍欧美精品app| 手机av免费一区在线| 精品白浆一区二区三区h| 国产美女在线精品免费观看网址| 国产成人精品高清在线电影| 99在线精品国自产拍中文字幕| 香港三日本三级少妇三级视频| 亚洲精品无码成人aaa片| 欧美最猛性xxxxx大叫| 亚洲精品一区二区久久| 国产裸拍裸体视频在线观看| 中文字幕亚洲欧美日韩在线不卡| 亚洲中文麻豆一区| 欧美午夜大片一区二区在线观看理论 | 亚洲精品拍拍央视网出文| 四虎影视884a精品国产| 娇妻被黑人粗大高潮白浆| 美女内射毛片在线看免费人动物| 99久久99久久精品国产片果冻| 99热久久这里只精品国产www| 水蜜桃无码视频在线观看| 免费无码又爽又刺激聊天app| 国产精品久免费的黄网站| 亚洲成a人v影院色老汉影院|