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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java hotspot 是什么_什么是HotSpot

發布時間:2023/12/3 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java hotspot 是什么_什么是HotSpot 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Java是解釋語言,但并不意味著它一定被解釋執行。早期

的虛擬機確實一條一條指令解釋執行,但人們發現這樣效率太低,

不滿足各種要求,因此出現了許多其它虛擬機,如JIT的虛擬機。

HotSpot也是類似一種虛擬機,自從SUN買下后,已經把它放入

JRE 1.3以及后續版本中。

采用HotSpot的Java虛擬機,已經很難說Java是被虛擬機解釋執行了,

原因是HotSpot實際上是把Java的bytecode編譯成Native code,

然后運行。

實際上在HotSpot虛擬機中,有兩個技術是至關重要的,即動態編譯和

Profiling。HotSpot對bytecode的編譯,不是在程序運行前預先編譯的,

而是在程序運行過程中,動態編譯(compile during run-time),英文稱

Dynamic compilation。其實Just In Time也就是這個意思。

HotSpot是如何動態編譯Javad的bytecode呢?它采用的是一種smart的辦法。

HotSpot里有一個運行監視器,即Profile Monitor(不知國內如何翻譯Profile),

專門監視程序運行中,哪一部分運用頻度大, 哪些對性能影響至關重要。

當然Profile Monitor有一些算法,這些算法未必十全十美,但大體是能較好

獲得相關信息的。對于那些對程序運行效率影響交大的代碼,稱為熱點,

即hot spot,HotSpot會把這些部門動態地編譯成機器碼,Native code,

同時也對機器碼進行優化(類似C編譯器的一些優化),從而而提高運行效率。

而那些較少運行的Code,HotSpot虛擬機就不再浪費時間把它們編譯。

總體來看,Java bytecode是以解釋方式被load到虛擬機的。但虛擬機的

分析器根據一段運行,獲知對程序效率影響最大的部分,然后通過動態

編譯,同時進行優化,編譯成機器碼,然后為接下來的運行加速。總的

來說,HotSpot對bytecode有三層處理:不編譯,編譯,編譯并優化。

至于程序哪部分不編譯,哪部分編譯,哪部分做何種優化,則由Profile

Monitor決定。

那么為什么Java采用動態編譯器而不是象C++這樣采用靜態編譯器呢?

虛擬機提供的跨平臺運行條件固然是一方面,動態編譯器也在許多方面

比靜態編譯器優越。Profiling就是一個例子。靜態編譯器通常很難準確

預知程序運行過程中究竟什么部分最需要優化。靜態編譯器雖然可以把Java

全部編譯成Native Code,但卻做不到動態編譯器那樣的優化。

另一個典型的例子,叫做Method inlining。我們知道無論是在C還是在

Java里,函數調用都是很浪費系統時間的,因為有許多進棧出棧操作。

因此有一種優化辦法,就是把原來的函數調用,通過編譯器的編譯,改成

非函數調用,把函數代碼直接嵌到調用出,變成順序執行。

但這一方法在Java/C++這樣的面向對象的語言的編譯器中,較難很好實現。

那些靜態編譯器,通常可以把private,static等函數進行Method inlining,

但由于這些面向對象的語言支持函數重載,支持動態聯編(不知道是不是這樣

翻譯,Overridden, dynamic binding),因此靜態編譯器并不知道究竟應該

把函數的哪個實現給inline了。

HotSpot的動態編譯,由于有對函數調用的監視,因此可以準確地知道一些環境

下,那些被重載和動態識別的函數可以如何被inline到調用者那里去,因此

實際上對于一些Server應用來說,可以大幅度提高效率。

HotSpot實際上有兩個版本,一個是Server版,一個是Client版。但它們的結構

和本質都是一樣的,只是有些地方優化不一樣。

了解了這些,就知道,有時候Java的程序甚至能比C程序運行還快。

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的java hotspot 是什么_什么是HotSpot的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。