導航:首頁 > 文檔加密 > 深入理解java虛擬機pdf

深入理解java虛擬機pdf

發布時間:2022-05-26 17:09:52

㈠ 深入理解java虛擬機第二版和第三版的區別

區別:

第三版是一款針對java學習打造的圖書,它從Java程序員的角度出發,系統地將Java程序運行過程中涉及的各種知識整合到了一起,而第二版不僅技術更新、內容更豐富,而且實戰性更強。

㈡ 《深入理解Java虛擬機JVM高級特性與最佳實踐》epub下載在線閱讀全文,求百度網盤雲資源

《深入理解Java虛擬機(第3版)》(周志明)電子書網盤下載免費在線閱讀

鏈接: https://pan..com/s/1Pt3y-i1BCy3rLBhEtfDjOA

提取碼: ss25

書名:深入理解Java虛擬機(第3版)

作者:周志明

豆瓣評分:9.5

出版社:機械工業出版社

出版年份:2019-12

頁數:540

內容簡介:

內容介紹

這是一部從工作原理和工程實踐兩個維度深入剖析JVM的著作,是計算機領域公認的經典,繁體版在台灣也頗受歡迎。

自2011年上市以來,前兩個版本累計印刷36次,銷量超過30萬冊,兩家主要網路書店的評論近90000條,內容上近乎零差評,是原創計算機圖書領域不可逾越的豐碑。

作者簡介:

資深Java技術、機器學習和企業級開發技術專家,現任遠光軟體研究院院長,人工智慧博士在讀,著有知名暢銷書《深入理解Java虛擬機:JVM高級特性與最佳實踐》。

開源技術的積極倡導者和推動者,對計算機科學和相關的多個領域都有深刻的見解,尤其是人工智慧、Java開發和敏捷開發等領域。曾受邀在InfoQ和IBM DeveloperWorks等網站撰寫技術專欄。

著作頗豐,著有《深入理解Java虛擬機》《深入理解OSGi》,翻譯了《Java虛擬機規范》等著作。其中《深入理解Java虛擬機》第1版出版於2011年,已經出至第2版,不僅銷量好,而且口碑更好,累計印刷超過30次,仍長銷不衰,是中文計算機圖書領域公認的、難得一見的佳作。


㈢ 什麼是 Java 虛擬機

您好,提問者:

Java虛擬機簡稱JVM,它的作用如下:

1、其實Java不可跨平台,真正實現跨平台的是JVM虛擬機。

2、JVM其實就是一個編譯java、運行class的一個跟操作系統的一個軟體。

3、JVM的作用只針對於Java,而系統中的東西與它無關。

4、其實說白了就是一個軟體,就像VMware一樣。

Java虛擬機


一、什麼是Java虛擬機


Java虛擬機是一個想像中的機器,在實際的計算機上通過軟體模擬來實現。Java虛擬機有自己想像中的硬體,如處理器、堆棧、寄存器等,還具有相應的指令系統。


  1. 為什麼要使用Java虛擬機

Java語言的一個非常重要的特點就是與平台的無關性。而使用Java虛擬機是實現這一特點的關鍵。一般的高級語言如果要在不同的平台上運行,至少需要編譯成不同的目標代碼。而引入Java語言虛擬機後,Java語言在不同平台上運行時不需要重新編譯。Java語言使用模式Java虛擬機屏蔽了與具體平台相關的信息,使得Java語言編譯程序只需生成在Java虛擬機上運行的目標代碼(位元組碼),就可以在多種平台上不加修改地運行。Java虛擬機在執行位元組碼時,把位元組碼解釋成具體平台上的機器指令執行。


2.誰需要了解Java虛擬機


Java虛擬機是Java語言底層實現的基礎,對Java語言感興趣的人都應對Java虛擬機有個大概的了解。這有助於理解Java語言的一些性質,也有助於使用Java語言。對於要在特定平台上實現Java虛擬機的軟體人員,Java語言的編譯器作者以及要用硬體晶元實現Java虛擬機的人來說,則必須深刻理解Java虛擬機的規范。另外,如果你想擴展Java語言,或是把其它語言編譯成Java語言的位元組碼,你也需要深入地了解Java虛擬機。


3.Java虛擬機支持的數據類型


Java虛擬機支持Java語言的基本數據類型如下:


byte://1位元組有符號整數的補碼

short://2位元組有符號整數的補碼

int://4位元組有符號整數的補碼

long://8位元組有符號整數的補碼

float://4位元組IEEE754單精度浮點數

double://8位元組IEEE754雙精度浮點數

char://2位元組無符號Unicode字元


幾乎所有的Java類型檢查都是在編譯時完成的。上面列出的原始數據類型的數據在Java執行時不需要用硬體標記。操作這些原始數據類型數據的位元組碼(指令)本身就已經指出了操作數的數據類型,例如iadd、ladd、fadd和dadd指令都是把兩個數相加,其操作數類型別是int、long、float和double。虛擬機沒有給boolean(布爾)類型設置單獨的指令。boolean型的數據是由integer指令,包括integer返回來處理的。boolean型的數組則是用byte數組來處理的。虛擬機使用IEEE754格式的浮點數。不支持IEEE格式的較舊的計算機,在運行Java數值計算程序時,可能會非常慢。


虛擬機支持的其它數據類型包括:

object//對一個Javaobject(對象)的4位元組引用

returnAddress//4位元組,用於jsr/ret/jsr-w/ret-w指令

注:Java數組被當作object處理。


虛擬機的規范對於object內部的結構沒有任何特殊的要求。在Sun公司的實現中,對object的引用是一個句柄,其中包含一對指針:一個指針指向該object的方法表,另一個指向該object的數據。用Java虛擬機的位元組碼表示的程序應該遵守類型規定。Java虛擬機的實現應拒絕執行違反了類型規定的位元組碼程序。Java虛擬機由於位元組碼定義的限制似乎只能運行於32位地址空間的機器上。但是可以創建一個Java虛擬機,它自動地把位元組碼轉換成64位的形式。從Java虛擬機支持的數據類型可以看出,Java對數據類型的內部格式進行了嚴格規定,這樣使得各種Java虛擬機的實現對數據的解釋是相同的,從而保證了Java的與平台無關性和可

移植性。


二、Java虛擬機體系結構


Java虛擬機由五個部分組成:一組指令集、一組寄存器、一個棧、一個無用單元收集堆(Garbage-collected-heap)、一個方法區域。這五部分是Java虛擬機的邏輯成份,不依賴任何實現技術或組織方式,但它們的功能必須在真實機器上以某種方式實現。


  1. Java指令集

Java虛擬機支持大約248個位元組碼。每個位元組碼執行一種基本的CPU運算,例如,把一個整數加到寄存器,子程序轉移等。Java指令集相當於Java程序的匯編語言。

Java指令集中的指令包含一個單位元組的操作符,用於指定要執行的操作,還有0個或多個操作數,提供操作所需的參數或數據。許多指令沒有操作數,僅由一個單位元組的操作符構成。


虛擬機的內層循環的執行過程如下:


do{

取一個操作符位元組;

根據操作符的值執行一個動作;

}while(程序未結束)


由於指令系統的簡單性,使得虛擬機執行的過程十分簡單,從而有利於提高執行的效率。指令中操作數的數量和大小是由操作符決定的。如果操作數比一個位元組大,那麼它存儲的順序是高位位元組優先。例如,一個16位的參數存放時佔用兩個位元組,其值為:


第一個位元組*256+第二個位元組位元組碼指令流一般只是位元組對齊的。指令tabltch和lookup是例外,在這兩條指令內部要求強制的4位元組邊界對齊。


2.寄存器


Java虛擬機的寄存器用於保存機器的運行狀態,與微處理器中的某些專用寄存器類似。


Java虛擬機的寄存器有四種:

pc:Java程序計數器。

optop:指向操作數棧頂端的指針。

frame:指向當前執行方法的執行環境的指針。

vars:指向當前執行方法的局部變數區第一個變數的指針。


Java虛擬機


Java虛擬機是棧式的,它不定義或使用寄存器來傳遞或接受參數,其目的是為了保證指令集的簡潔性和實現時的高效性(特別是對於寄存器數目不多的處理器)。

所有寄存器都是32位的。


3.棧


Java虛擬機的棧有三個區域:局部變數區、運行環境區、操作數區。


(1)局部變數區 每個Java方法使用一個固定大小的局部變數集。它們按照與vars寄存器的字偏移量來定址。局部變數都是32位的。長整數和雙精度浮點數占據了兩個局部變數的空間,卻按照第一個局部變數的索引來定址。(例如,一個具有索引n的局部變數,如果是一個雙精度浮點數,那麼它實際占據了索引n和n+1所代表的存儲空間。)虛擬機規范並不要求在局部變數中的64位的值是64位對齊的。虛擬機提供了把局部變數中的值裝載到操作數棧的指令,也提供了把操作數棧中的值寫入局部變數的指令。


(2)運行環境區 在運行環境中包含的信息用於動態鏈接,正常的方法返回以及異常傳播。


·動態鏈接

運行環境包括對指向當前類和當前方法的解釋器符號表的指針,用於支持方法代碼的動態鏈接。方法的class文件代碼在引用要調用的方法和要訪問的變數時使用符號。動態鏈接把符號形式的方法調用翻譯成實際方法調用,裝載必要的類以解釋還沒有定義的符號,並把變數訪問翻譯成與這些變數運行時的存儲結構相應的偏移地址。動態鏈接方法和變數使得方法中使用的其它類的變化不會影響到本程序的代碼。


·正常的方法返回

如果當前方法正常地結束了,在執行了一條具有正確類型的返回指令時,調用的方法會得到一個返回值。執行環境在正常返回的情況下用於恢復調用者的寄存器,並把調用者的程序計數器增加一個恰當的數值,以跳過已執行過的方法調用指令,然後在調用者的執行環境中繼續執行下去。


·異常和錯誤傳播

異常情況在Java中被稱作Error(錯誤)或Exception(異常),是Throwable類的子類,在程序中的原因是:①動態鏈接錯,如無法找到所需的class文件。②運行時錯,如對一個空指針的引用


·程序使用了throw語句。

當異常發生時,Java虛擬機採取如下措施:

·檢查與當前方法相聯系的catch子句表。每個catch子句包含其有效指令范圍,能夠處理的異常類型,以及處理異常的代碼塊地址。

·與異常相匹配的catch子句應該符合下面的條件:造成異常的指令在其指令范圍之內,發生的異常類型是其能處理的異常類型的子類型。如果找到了匹配的catch子句,那麼系統轉移到指定的異常處理塊處執行;如果沒有找到異常處理塊,重復尋找匹配的catch子句的過程,直到當前方法的所有嵌套的catch子句都被檢查過。

·由於虛擬機從第一個匹配的catch子句處繼續執行,所以catch子句表中的順序是很重要的。因為Java代碼是結構化的,因此總可以把某個方法的所有的異常處理器都按序排列到一個表中,對任意可能的程序計數器的值,都可以用線性的順序找到合適的異常處理塊,以處理在該程序計數器值下發生的異常情況。

·如果找不到匹配的catch子句,那麼當前方法得到一個"未截獲異常"的結果並返回到當前方法的調用者,好像異常剛剛在其調用者中發生一樣。如果在調用者中仍然沒有找到相應的異常處理塊,那麼這種錯誤傳播將被繼續下去。如果錯誤被傳播到最頂層,那麼系統將調用一個預設的異常處理塊。

(3)操作數棧區 機器指令只從操作數棧中取操作數,對它們進行操作,並把結果返回到棧中。選擇棧結構的原因是:在只有少量寄存器或非通用寄存器的機器(如Intel486)上,也能夠高效地模擬虛擬機的行為。操作數棧是32位的。它用於給方法傳遞參數,並從方法接收結果,也用於支持操作的參數,並保存操作的結果。例如,iadd指令將兩個整數相加。相加的兩個整數應該是操作數棧頂的兩個字。這兩個字是由先前的指令壓進堆棧的。這兩個整數將從堆棧彈出、相加,並把結果壓回到操作數棧中。


每個原始數據類型都有專門的指令對它們進行必須的操作。每個操作數在棧中需要一個存儲位置,除了long和double型,它們需要兩個位置。操作數只能被適用於其類型的操作符所操作。例如,壓入兩個int類型的數,如果把它們當作是一個long類型的數則是非法的。在Sun的虛擬機實現中,這個限制由位元組碼驗證器強制實行。但是,有少數操作(操作符pe和swap),用於對運行時數據區進行操作時是不考慮類型的。


4.無用單元收集堆


Java的堆是一個運行時數據區,類的實例(對象)從中分配空間。Java語言具有無用單元收集能力:它不給程序員顯式釋放對象的能力。Java不規定具體使用的無用單元收集演算法,可以根據系統的需求使用各種各樣的演算法。


5.方法區


方法區與傳統語言中的編譯後代碼或是Unix進程中的正文段類似。它保存方法代碼(編譯後的java代碼)和符號表。在當前的Java實現中,方法代碼不包括在無用單元收集堆中,但計劃在將來的版本中實現。每個類文件包含了一個Java類或一個Java界面的編譯後的代碼。可以說類文件是Java語言的執行代碼文件。為了保證類文件的平台無關性,Java虛擬機規范中對類文件的格式也作了詳細的說明。其具體細節請參考Sun公司的Java虛擬機規范。

㈣ 什麼是Java虛擬機

虛擬機是一種抽象化的計算機,通過在實際的計算機上模擬模擬各種計算機功能來實現的。

Java虛擬機有自己完善的硬體架構,如處理器、堆棧、寄存器等,還具有相應的指令系統。JVM屏蔽了與具體操作系統平台相關的信息,使得Java程序只需生成在Java虛擬機上運行的目標代碼(位元組碼),就可以在多種平台上不加修改地運行。

這種解釋應該算是正確的,但是只描述了虛擬機的外部行為和功能,並沒有針對內部原理做出說明。一般情況下我們不需要知道虛擬機的運行原理,只要專注寫java代碼就可以了,這也正是虛擬機之所以存在的原因--屏蔽底層操作系統平台的不同並且減少基於原生語言開發的復雜性,使java這門語言能夠跨各種平台(只要虛擬機廠商在特定平台上實現了虛擬機),並且簡單易用。這些都是虛擬機的外部特性,但是從這些信息來解釋虛擬機,未免太籠統了,無法讓我們知道內部原理。


從進程的角度解釋JVM


讓我們嘗試從操作系統的層面來理解虛擬機。我們知道,虛擬機是運行在操作系統之中的,那麼什麼東西才能在操作系統中運行呢?當然是進程,因為進程是操作系統中的執行單位。可以這樣理解,當它在運行的時候,它就是一個操作系統中的進程實例,當它沒有在運行時(作為可執行文件存放於文件系統中),可以把它叫做程序。

命令行比較熟悉的同學,都知道其實一個命令對應一個可執行的二進制文件,當敲下這個命令並且回車後,就會創建一個進程,載入對應的可執行文件到進程的地址空間中,並且執行其中的指令。下面對比C語言和Java語言的HelloWorld程序來說明問題。

首先編寫C語言版的HelloWorld程序。

總結

寫到這里,基本上關於我對java虛擬機的理解就寫完了。這篇文章的主題雖然是深入理解Java虛擬機,但是你可能感覺一點也不「深入」,也只是泛泛而談。我也有這樣的感覺。限於自己水平有限,也只能這樣了,要是想深入理解java虛擬機,強烈建議讀一下三本書:

《深入Java虛擬機》

《深入理解Java虛擬機JVM高級特性與最佳實踐》

《Java虛擬機規范》

其實我也讀過這幾本書,但是它們對虛擬機的解釋也是基於一個外部模型,而沒有深入剖析虛擬機內部的實現原理。虛擬機是一個大而復雜的東西,實現虛擬機的人都是大牛級別的,如果不是參與過虛擬機的實現,應該很少有人能把它參透。本專欄後面的一些文章也參考了這三本書, 雖然講解Java語法的書不計其數, 但是深入講解虛擬機的書, 目前為止我就見過這三本,並且網上的資料也不是很多。

最後做一個總結:

1 虛擬機並不神秘,在操作系統的角度看來,它只是一個普通進程。

2 這個叫做虛擬機的進程比較特殊,它能夠載入我們編寫的class文件。如果把JVM比作一個人,那麼class文件就是我們吃的食物。

3 載入class文件的是一個叫做類載入器的子系統。就好比我們的嘴巴,把食物吃到肚子里。

4 虛擬機中的執行引擎用來執行class文件中的位元組碼指令。就好比我們的腸胃,對吃進去的食物進行消化。

5 虛擬機在執行過程中,要分配內存創建對象。當這些對象過時無用了,必須要自動清理這些無用的對象。清理對象回收內存的任務由垃圾收集器負責。就好比人吃進去的食物,在消化之後,必須把廢物排出體外,騰出空間可以在下次餓的時候吃飯並消化食物。

(4)深入理解java虛擬機pdf擴展閱讀:

關於JAVA虛擬機的參數說明如下:

1、運行class文件

執行帶main方法的class文件,Java虛擬機[3]命令參數行為:

java <CLASS文件名>

注意:CLASS文件名不要帶文件後綴.class

例如:

java Test

如果執行的class文件是帶包的,即在類文件中使用了:

package <;包名>

那應該在包的基路徑下執行,Java虛擬機命令行參數:

java <;包名>.CLASS文件名

例如:

PackageTest.java中,其包名為:com.ee2ee.test,對應的語句為:

package com.ee2ee.test;

PackageTest.java及編譯後的class文件PackageTest.class的存放目錄如下:

classes

|__com

|__ee2ee

|__test

|__PackageTest.java

|__PackageTest.class

要運行PackageTest.class,應在classes目錄下執行:

java com.ee2ee.test.PackageTest

2、運行jar文件中的class

原理和運行class文件一樣,只需加上參數-cp <jar文件名>;即可。

例如:執行test.jar中的類com.ee2ee.test.PackageTest,命令行如下:

java -cp test.jar com.ee2ee.test.PackageTest

3、顯示JDK版本信息

當一台機器上有多個jdk版本時,需要知道當前使用的是那個版本的jdk,使用參數-version即可知道其版本,命令行為:

java -version

4、增加虛擬機可以使用的最大內存

Java虛擬機可使用的最大內存是有限制的,預設值通常為64MB或128MB。

如果一個應用程序為了提高性能而把數據載入內存中而佔用較大的內存,比如超過了默認的最大值128MB,需要加大java虛擬機可使用的最大內存,否則會出現Out of Memory的異常。啟動java時,需要使用如下兩個參數:

-Xms java虛擬機初始化時使用的內存大小

-Xmx java虛擬機可以使用的最大內存

以上兩個命令行參數中設置的size,可以帶單位,例如:256m表示256MB

舉例說明:

java -Xms128m -Xmx256m ...

表示Java虛擬機初始化時使用的內存為128MB,可使用的最大內存為256MB。

對於tomcat,可以修改其腳本catalina. sh(Unix平台)或catalina.bat(Windows平台),設置變數JAVA_OPTS即可,例如:

JAVA_OPTS='-Xms128m -Xmx256m'



㈤ 求《深入理解Java虛擬機(第二版)》全文免費下載百度網盤資源,謝謝~

《深入理解Java虛擬機(第二版)》網路網盤pdf最新全集下載:
鏈接: https://pan..com/s/1VM5oW6jdDg5bWQJ5RCdNqg

?pwd=uutu 提取碼: uutu
簡介:作為一位Java程序員,你是否也曾經想深入理解Java虛擬機,但是卻被它的復雜和深奧拒之門外?沒關系,本書極盡化繁為簡之妙,能帶領你在輕松中領略Java虛擬機的奧秘。本書是近年來國內出版的唯一一本與Java虛擬機相關的專著,也是唯一一本同時從核心理論和實際運用這兩個角度去探討Java虛擬機的著作,不僅理論分析得透徹,而且書中包含的典型案例和最佳實踐也極具現實指導意義。

㈥ 《深入理解Java虛擬機JVM高級特性與最佳實踐》epub下載在線閱讀,求百度網盤雲資源

《深入理解Java虛擬機(第3版)》(周志明)電子書網盤下載免費在線閱讀

資源鏈接:

鏈接:https://pan..com/s/1ng0b0CPBKKxMBv-zUSHsng


提取碼:m2dc

書名:深入理解Java虛擬機(第3版)

作者:周志明

豆瓣評分:9.5

出版社:機械工業出版社

出版年份:2019-12

頁數:540

內容簡介:內容介紹

這是一部從工作原理和工程實踐兩個維度深入剖析JVM的著作,是計算機領域公認的經典,繁體版在台灣也頗受歡迎。

自2011年上市以來,前兩個版本累計印刷36次,銷量超過30萬冊,兩家主要網路書店的評論近90000條,內容上近乎零差評,是原創計算機圖書領域不可逾越的豐碑。

第3版在第2版的基礎上做了重大修訂,內容更豐富、實戰性更強:根據新版JDK對內容進行了全方位的修訂和升級,圍繞新技術和生產實踐新增逾10萬字,包含近50%的全新內容,並對第2版中含糊、瑕疵和錯誤內容進行了修正。

全書一共13章,分為五大部分:

第一部分(第1章)走近Java

系統介紹了Java的技術體系、發展歷程、虛擬機家族,以及動手編譯JDK,了解這部分內容能對學習JVM提供良好的指引。

第二部分(第2~5章)自動內存管理

詳細講解了Java的內存區域與內存溢出、垃圾收集器與內存分配策略、虛擬機性能監控與故障排除等與自動內存管理相關的內容,以及10餘個經典的性能優化案例和優化方法;

第三部分(第6~9章)虛擬機執行子系統

深入分析了虛擬機執行子系統,包括類文件結構、虛擬機類載入機制、虛擬機位元組碼執行引擎,以及多個類載入及其執行子系統的實戰案例;

第四部分(第10~11章)程序編譯與代碼優化

詳細講解了程序的前、後端編譯與優化,包括前端的易用性優化措施,如泛型、主動裝箱拆箱、條件編譯等的內容的深入分析;以及後端的性能優化措施,如虛擬機的熱點探測方法、HotSpot 的即時編譯器、提前編譯器,以及各種常見的編譯期優化技術;

第五部分(第12~13章)高效並發

主要講解了Java實現高並發的原理,包括Java的內存模型、線程與協程,以及線程安全和鎖優化。

全書以實戰為導向,通過大量與實際生產環境相結合的案例分析和展示了解決各種Java技術難題的方案和技巧。

作者簡介:資深Java技術、機器學習和企業級開發技術專家,現任遠光軟體研究院院長,人工智慧博士在讀,著有知名暢銷書《深入理解Java虛擬機:JVM高級特性與最佳實踐》。

開源技術的積極倡導者和推動者,對計算機科學和相關的多個領域都有深刻的見解,尤其是人工智慧、Java開發和敏捷開發等領域。曾受邀在InfoQ和IBM DeveloperWorks等網站撰寫技術專欄。

著作頗豐,著有《深入理解Java虛擬機》《深入理解OSGi》,翻譯了《Java虛擬機規范》等著作。其中《深入理解Java虛擬機》第1版出版於2011年,已經出至第2版,不僅銷量好,而且口碑更好,累計印刷超過30次,仍長銷不衰,是中文計算機圖書領域公認的、難得一見的佳作。

㈦ 深入java虛擬機 絕版和深入理解Java虛擬機:JVM高級特性與最佳實踐 周志明

市面上關於jvm的書少之又少,要不是周志明出的這本深入理解java虛擬機,那麼中文jvm的書籍可以說是有10年的空隙了,上一版還是02年的《java虛擬機規范》了。
從時效上來說,《深入java虛擬機》出自2000年,技術上已然是滯後很多了。
所以這兩者比較,絕對推薦後者。

另外單《深入理解java虛擬機》一書來評價,絕對算是一本好書了,掌握此書內容後,基本可以解決java程序員日常遇到的虛擬機先關問題(OOM,調優,GC等),以及應付各種關於該條目的面試筆試問題。
其中,java內存管理,類載入機制,垃圾回收建議重點閱讀

國外的了解不多,但是就目前來看,建議樓主先吃透周志明老師的這本。有基礎還想深入的話,java虛擬機規范這種官方標准文檔放著呢。

㈧ 誰有《深入理解Java虛擬機:JVM高級特性與最佳實踐-周志明》電子書百度網盤資源下載

《深入理解Java虛擬機:JVM高級特性與最佳實踐-周志明》電子書網路網盤資源下載:

鏈接: https://pan..com/s/10SXSALpvlFQzmfDOmbSqnw

提取碼: kpf4

深入理解Java虛擬機:JVM高級特性與最佳實踐-周志明

㈨ 《深入理解Java虛擬機》pdf下載在線閱讀全文,求百度網盤雲資源

《深入理解Java虛擬機》網路網盤pdf最新全集下載:
鏈接: https://pan..com/s/1mIyCm1Wssk4Iy9P8haqfUw

?pwd=ptij 提取碼: ptij
簡介:全書共分為五大部分,統介紹了Java的技術體系、發展歷程、虛擬機家族,以及動手編譯JDK,了解這部分內容能對學習JVM提供良好的指引。

㈩ 深入理解Java虛擬機:JVM高級特性與最佳實踐的內容簡介

作為一位java程序員,你是否也曾經想深入理解java虛擬機,但是卻被它的復雜和深奧拒之門外?沒關系,《深入理解java虛擬機:jvm高級特性與最佳實踐》極盡化繁為簡之妙,能帶領你在輕松中領略java虛擬機的奧秘。《深入理解java虛擬機:jvm高級特性與最佳實踐》是近年來國內出版的唯一一本與java虛擬機相關的專著,也是唯一一本同時從核心理論和實際運用這兩個角度去探討java虛擬機的著作,不僅理論分析得透徹,而且書中包含的典型案例和最佳實踐也極具現實指導意義。
全書共分為五大部分。第一部分從宏觀的角度介紹了整個java技術體系的過去、現在和未來,以及如何獨立地編譯一個openjdk7,這對理解後面的內容很有幫助。第二部分講解了jvm的自動內存管理,包括虛擬機內存區域的劃分原理以及各種內存溢出異常產生的原因;常見的垃圾收集演算法以及垃圾收集器的特點和工作原理;常見的虛擬機的監控與調試工具的原理和使用方法。第三部分分析了虛擬機的執行子系統,包括class的文件結構以及如何存儲和訪問class中的數據;虛擬機的類創建機制以及類載入器的工作原理和它對虛擬機的意義;虛擬機位元組碼的執行引擎以及它在實行代碼時涉及的內存結構。第四部分講解了程序的編譯與代碼的優化,闡述了泛型、自動裝箱拆箱、條件編譯等語法糖的原理;講解了虛擬機的熱點探測方法、hotspot的即時編譯器、編譯觸發條件,以及如何從虛擬機外部觀察和分析jit編譯的數據和結果。第五部分探討了java實現高效並發的原理,包括jvm內存模型的結構和操作;原子性、可見性和有序性在java內存模型中的體現;先行發生原則的規則和使用;線程在java語言中的實現原理;虛擬機實現高效並發所做的一系列鎖優化措施。
《深入理解java虛擬機:jvm高級特性與最佳實踐》適合所有java程序員、系統調優師和系統架構師閱讀。

閱讀全文

與深入理解java虛擬機pdf相關的資料

熱點內容
卡爾曼濾波演算法書籍 瀏覽:763
安卓手機怎麼用愛思助手傳文件進蘋果手機上 瀏覽:840
安卓怎麼下載60秒生存 瀏覽:799
外向式文件夾 瀏覽:231
dospdf 瀏覽:428
怎麼修改騰訊雲伺服器ip 瀏覽:382
pdftoeps 瀏覽:489
為什麼鴻蒙那麼像安卓 瀏覽:732
安卓手機怎麼拍自媒體視頻 瀏覽:183
單片機各個中斷的初始化 瀏覽:720
python怎麼集合元素 瀏覽:477
python逐條解讀 瀏覽:829
基於單片機的濕度控制 瀏覽:496
ios如何使用安卓的帳號 瀏覽:879
程序員公園采訪 瀏覽:807
程序員實戰教程要多長時間 瀏覽:970
企業數據加密技巧 瀏覽:132
租雲伺服器開發 瀏覽:809
程序員告白媽媽不同意 瀏覽:332
攻城掠地怎麼查看伺服器 瀏覽:597