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

深入理解Java虛擬pdf

發布時間:2022-04-26 11:23:34

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

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

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

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

❷ 深入理解Java虛擬機:JVM高級特性與最佳實踐的目錄

前言
致謝
第一部分走近Java
第1章走近Java / 2
1.1概述 / 2
1.2Java技術體系 / 3
1.3Java發展史 / 5
1.4展望Java技術的未來 / 9
1.4.1模塊化 / 9
1.4.2混合語言 / 9
1.4.3多核並行 / 11
1.4.4進一步豐富語法 / 12
1.4.564位虛擬機 / 13
1.5實戰:自己編譯JDK / 13
1.5.1獲取JDK源碼 / 13
1.5.2系統需求 / 14
1.5.3構建編譯環境 / 15
1.5.4准備依賴項 / 17
1.5.5進行編譯 / 18
1.6本章小結 / 21
第二部分自動內存管理機制
第2章Java內存區域與內存溢出異常 / 24
2.1概述 / 24
2.2運行時數據區域 / 25
2.2.1程序計數器 / 25
2.2.2Java虛擬機棧 / 26
2.2.3本地方法棧 / 27
2.2.4Java堆 / 27
2.2.5方法區 / 28
2.2.6運行時常量池 / 29
2.2.7直接內存 / 29
2.3對象訪問 / 30
2.4實戰:OutOfMemoryError異常 / 32
2.4.1Java堆溢出 / 32
2.4.2虛擬機棧和本地方法棧溢出 / 35
2.4.3運行時常量池溢出 / 38
2.4.4方法區溢出 / 39
2.4.5本機直接內存溢出 / 41
2.5本章小結 / 42
第3章垃圾收集器與內存分配策略 / 43
3.1概述 / 43
3.2對象已死? / 44
3.2.1引用計數演算法 / 44
3.2.2根搜索演算法 / 46
3.2.3再談引用 / 47
3.2.4生存還是死亡? / 48
3.2.5回收方法區 / 50
3.3垃圾收集演算法 / 51
3.3.1標記 -清除演算法 / 51
3.3.2復制演算法 / 52
3.3.3標記-整理演算法 / 54
3.3.4分代收集演算法 / 54
3.4垃圾收集器 / 55
3.4.1Serial收集器 / 56
3.4.2ParNew收集器 / 57
3.4.3Parallel Scavenge收集器 / 59
3.4.4Serial Old收集器 / 60
3.4.5Parallel Old收集器 / 61
3.4.6CMS收集器 / 61
3.4.7G1收集器 / 64
3.4.8垃圾收集器參數總結 / 64
3.5內存分配與回收策略 / 65
3.5.1對象優先在Eden分配 / 66
3.5.2大對象直接進入老年代 / 68
3.5.3長期存活的對象將進入老年代 / 69
3.5.4動態對象年齡判定 / 71
3.5.5空間分配擔保 / 73
3.6本章小結 / 75
第4章虛擬機性能監控與故障處理工具 / 76
4.1概述 / 76
4.2JDK的命令行工具 / 76
4.2.1jps:虛擬機進程狀況工具 / 79
4.2.2jstat:虛擬機統計信息監視工具 / 80
4.2.3jinfo:Java配置信息工具 / 82
4.2.4jmap:Java內存映像工具 / 82
4.2.5jhat:虛擬機堆轉儲快照分析工具 / 84
4.2.6jstack:Java堆棧跟蹤工具 / 85
4.3JDK的可視化工具 / 87
4.3.1JConsole:Java監視與管理控制台 / 88
4.3.2VisualVM:多合一故障處理工具 / 96
4.4本章小結 / 105
第5章調優案例分析與實戰 / 106
5.1概述 / 106
5.2案例分析 / 106
5.2.1高性能硬體上的程序部署策略 / 106
5.2.2集群間同步導致的內存溢出 / 109
5.2.3堆外內存導致的溢出錯誤 / 110
5.2.4外部命令導致系統緩慢 / 112
5.2.5伺服器JVM進程崩潰 / 113
5.3實戰:Eclipse運行速度調優 / 114
5.3.1調優前的程序運行狀態 / 114
5.3.2升級JDK 1.6的性能變化及兼容問題 / 117
5.3.3編譯時間和類載入時間的優化 / 122
5.3.4調整內存設置控制垃圾收集頻率 / 126
5.3.5選擇收集器降低延遲 / 130
5.4本章小結 / 133
第三部分虛擬機執行子系統
第6章類文件結構 / 136
6.1概述 / 136
6.2無關性的基石 / 136
6.3Class類文件的結構 / 138
6.3.1魔數與Class文件的版本 / 139
6.3.2常量池 / 141
6.3.3訪問標志 / 147
6.3.4類索引、父類索引與介面索引集合 / 148
6.3.5欄位表集合 / 149
6.3.6方法表集合 / 153
6.3.7屬性表集合 / 155
6.4Class文件結構的發展 / 168
6.5本章小結 / 170
第7章虛擬機類載入機制 / 171
7.1概述 / 171
7.2類載入的時機 / 172
7.3類載入的過程 / 176
7.3.1載入 / 176
7.3.2驗證 / 178
7.3.3准備 / 181
7.3.4解析 / 182
7.3.5初始化 / 186
7.4類載入器 / 189
7.4.1類與類載入器 / 189
7.4.2雙親委派模型 / 191
7.4.3破壞雙親委派模型 / 194
7.5本章小結 / 197
第8章虛擬機位元組碼執行引擎 / 198
8.1概述 / 198
8.2運行時棧幀結構 / 199
8.2.1局部變數表 / 199
8.2.2操作數棧 / 204
8.2.3動態連接 / 206
8.2.4方法返回地址 / 206
8.2.5附加信息 / 207
8.3方法調用 / 207
8.3.1解析 / 207
8.3.2分派 / 209
8.4基於棧的位元組碼解釋執行引擎 / 221
8.4.1解釋執行 / 221
8.4.2基於棧的指令集與基於寄存器的指令集 / 223
8.4.3基於棧的解釋器執行過程 / 224
8.5本章小結 / 230
第9章類載入及執行子系統的案例與實戰 / 231
9.1概述 / 231
9.2案例分析 / 231
9.2.1Tomcat:正統的類載入器架構 / 232
9.2.2OSGi:靈活的類載入器架構 / 235
9.2.3位元組碼生成技術與動態代理的實現 / 238
9.2.4Retrotranslator:跨越JDK版本 / 242
9.3實戰:自己動手實現遠程執行功能 / 246
9.3.1目標 / 246
9.3.2思路 / 247
9.3.3實現 / 248
9.3.4驗證 / 255
9.4本章小結 / 256
第四部分程序編譯與代碼優化
第10章早期(編譯期)優化 / 258
10.1概述 / 258
10.2Javac編譯器 / 259
10.2.1Javac的源碼與調試 / 259
10.2.2解析與填充符號表 / 262
10.2.3註解處理器 / 264
10.2.4語義分析與位元組碼生成 / 264
10.3Java語法糖的味道 / 268
10.3.1泛型與類型擦除 / 268
10.3.2自動裝箱、拆箱與遍歷循環 / 273
10.3.3條件編譯 / 275
10.4實戰:插入式註解處理器 / 276
10.4.1實戰目標 / 276
10.4.2代碼實現 / 277
10.4.3運行與測試 / 284
10.4.4其他應用案例 / 286
10.5本章小結 / 286
第11章晚期(運行期)優化 / 287
11.1概述 / 287
11.2HotSpot虛擬機內的即時編譯器 / 288
11.2.1解釋器與編譯器 / 288
11.2.2編譯對象與觸發條件 / 291
11.2.3編譯過程 / 294
11.2.4查看與分析即時編譯結果 / 297
11.3編譯優化技術 / 301
11.3.1優化技術概覽 / 301
11.3.2公共子表達式消除 / 305
11.3.3數組邊界檢查消除 / 307
11.3.4方法內聯 / 307
11.3.5逃逸分析 / 309
11.4Java與C/C++的編譯器對比 / 311
11.5本章小結 / 313
第五部分高效並發
第12章Java內存模型與線程 / 316
12.1概述 / 316
12.2硬體的效率與一致性 / 317
12.3Java內存模型 / 318
12.3.1主內存與工作內存 / 319
12.3.2內存間交互操作 / 320
12.3.3對於volatile型變數的特殊規則 / 322
12.3.4對於long和double型變數的特殊規則 / 327
12.3.5原子性、可見性與有序性 / 328
12.3.6先行發生原則 / 330
12.4Java與線程 / 333
12.4.1線程的實現 / 333
12.4.2Java線程調度 / 337
12.4.3狀態轉換 / 339
12.5本章小結 / 341
第13章線程安全與鎖優化 / 342
13.1概述 / 342
13.2線程安全 / 343
13.2.1Java語言中的線程安全 / 343
13.2.2線程安全的實現方法 / 348
13.3鎖優化 / 356
13.3.1自旋鎖與自適應自旋 / 356
13.3.2鎖消除 / 357
13.3.3鎖粗化 / 358
13.3.4輕量級鎖 / 358
13.3.5偏向鎖 / 361
13.4本章小結 / 362
附錄AJava虛擬機家族 / 363
附錄B虛擬機位元組碼指令表 / 366
附錄CHotSpot虛擬機主要參數表 / 372
附錄D對象查詢語言(OQL)簡介 / 376
附錄EJDK歷史版本軌跡 / 383

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

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

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

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

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

資源鏈接:

鏈接:https://pan..com/s/1ySj-W7sTWYttLuIDrc6Bxw

密碼:0xhz

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

作者:周志明

豆瓣評分:9.0

出版社:機械工業出版社

出版年份:2013-9-1

頁數:433

內容簡介:

《深入理解Java虛擬機:JVM高級特性與最佳實踐(第2版)》內容簡介:第1版兩年內印刷近10次,4家網上書店的評論近4?000條,98%以上的評論全部為5星級的好評,是整個Java圖書領域公認的經典著作和超級暢銷書,繁體版在台灣也十分受歡迎。第2版在第1版的基礎上做了很大的改進:根據最新的JDK 1.7對全書內容進行了全面的升級和補充;增加了大量處理各種常見JVM問題的技巧和最佳實踐;增加了若干與生產環境相結合的實戰案例;對第1版中的錯誤和不足之處的修正;等等。第2版不僅技術更新、內容更豐富,而且實戰性更強。

《深入理解Java虛擬機:JVM高級特性與最佳實踐(第2版)》共分為五大部分,圍繞內存管理、執行子系統、程序編譯與優化、高效並發等核心主題對JVM進行了全面而深入的分析,深刻揭示了JVM的工作原理。

第一部分從宏觀的角度介紹了整個Java技術體系、Java和JVM的發展歷程、模塊化,以及JDK的編譯,這對理解書中後面內容有重要幫助。

第二部分講解了JVM的自動內存管理,包括虛擬機內存區域的劃分原理以及各種內存溢出異常產生的原因;常見的垃圾收集演算法以及垃圾收集器的特點和工作原理;常見虛擬機監控與故障處理工具的原理和使用方法。

第三部分分析了虛擬機的執行子系統,包括類文件結構、虛擬機類載入機制、虛擬機位元組碼執行引擎。

第四部分講解了程序的編譯與代碼的優化,闡述了泛型、自動裝箱拆箱、條件編譯等語法糖的原理;講解了虛擬機的熱點探測方法、HotSpot的即時編譯器、編譯觸發條件,以及如何從虛擬機外部觀察和分析JIT編譯的數據和結果;

第五部分探討了Java實現高效並發的原理,包括JVM內存模型的結構和操作;原子性、可見性和有序性在Java內存模型中的體現;先行發生原則的規則和使用;線程在Java語言中的實現原理;虛擬機實現高效並發所做的一系列鎖優化措施。

作者簡介:

周志明,資深Java技術專家,對JavaEE企業級應用開發、OSGi、Java虛擬機和工作流等都有深入的研究,並在大量的實踐中積累了豐富的經驗。尤其精通Java虛擬機,撰寫了大量與JVM相關的經典文章,被各大技術社區爭相轉載,是ITeye等技術社區公認的Java虛擬機方面的領袖人物之一。除本書外,還著有經典著作《深入理解OSGi:Equinox原理、應用與最佳實踐》,廣獲讀者好評。現任遠光軟體股份有限公司開發部總經理兼架構師,先後參與過國家電網、南方電網等多個國家級大型ERP項目的平台架構工作,對軟體系統架構也有深刻的認識和體會。

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

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

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

提取碼: kpf4

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

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

《深入理解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虛擬機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學習打造的圖書,它從Java程序員的角度出發,系統地將Java程序運行過程中涉及的各種知識整合到了一起,而第二版不僅技術更新、內容更豐富,而且實戰性更強。

❿ 深入理解Java虛擬機:JVM高級特性與最佳實踐的前言

Java是目前用戶最多、使用范圍最廣的軟體開發技術,Java的技術體系主要由支撐Java程序運行的虛擬機、為各開發領域提供介面支持的Java API、Java編程語言及許許多多的第三方Java框架(如Spring和Struts等)構成。在國內,有關Java API、Java語言及第三方框架的技術資料和書籍非常豐富,相比之下,有關Java虛擬機的資料卻顯得異常貧乏。
這種狀況很大程度上是由Java開發技術本身的一個重要優點導致的:在虛擬機層面隱藏了底層技術的復雜性以及機器與操作系統的差異性。運行程序的物理機器情況千差萬別,而Java虛擬機則在千差萬別的物理機上面建立了統一的運行平台,實現了在任意一台虛擬機上編譯的程序都能在任何一台虛擬機上正常運行。這一極大的優勢使得Java應用的開發比傳統C/C++應用的開發更高效和快捷,程序員可以把主要精力集中在具體業務邏輯上,而不是物理硬體的兼容性上。一般情況下,一個程序員只要了解了必要的Java API、Java語法並學習適當的第三方開發框架,就已經基本能滿足日常開發的需要了,虛擬機會在用戶不知不覺中完成對硬體平台的兼容以及對內存等資源的管理工作。因此,了解虛擬機的運作並不是一般開發人員必須掌握的知識。
然而,凡事都具備兩面性。隨著Java技術的不斷發展,它被應用於越來越多的領域之中。其中一些領域,如電力、金融、通信等,對程序的性能、穩定性和可擴展性方面都有極高的要求。一個程序很可能在10個人同時使用時完全正常,但是在10000個人同時使用時就會變慢、死鎖甚至崩潰。毫無疑問,要滿足10000個人同時使用需要更高性能的物理硬體,但是在絕大多數情況下,提升硬體效能無法等比例地提升程序的性能和並發能力,有時甚至可能對程序的性能沒有任何改善作用。這裡面有Java虛擬機的原因:為了達到為所有硬體提供一致的虛擬平台的目的,犧牲了一些硬體相關的性能特性。更重要的是人為原因:開發人員如果不了解虛擬機的一些技術特性的運行原理,就無法寫出最適合虛擬機運行和可自優化的代碼。
其實,目前商用的高性能Java虛擬機都提供了相當多的優化特性和調節手段,用於滿足應用程序在實際生產環境中對性能和穩定性的要求。如果只是為了入門學習,讓程序在自己的機器上正常運行,那麼這些特性可以說是可有可無的;如果用於生產環境,尤其是企業級應用開發中,就迫切需要開發人員中至少有一部分人對虛擬機的特性及調節方法具有很清晰的認識,所以在Java開發體系中,對架構師、系統調優師、高級程序員等角色的需求一直都非常大。學習虛擬機中各種自動運作的特性的原理也成為了Java程序員成長道路上必然會接觸到的一課。通過本書,讀者可以以一種相對輕松的方式學習虛擬機的運作原理,對Java程序員的成長也有較大的幫助。 (1) 使用Java技術體系的中、高級開發人員
Java虛擬機作為中、高級開發人員必須修煉的知識,有著較高的學習門檻,本書可作為學習虛擬機的優秀教材。
(2) 系統調優師
系統調優師是近幾年才興起的職業,本書中的大量案例、代碼和調優實戰將會對系統調優師的日常工作有直接的幫助。
(3) 系統架構師
保障系統高效、穩定和可伸縮是系統架構師的主要職責之一,而這與虛擬機的運作密不可分,本書可以作為他們設計應用系統底層框架的參考資料。 本書一共分為五個部分:走近Java、自動內存管理機制、虛擬機執行子系統、程序編譯與代碼優化、高效並發。各個部分基本上是相互獨立的,沒有必然的前後依賴關系,讀者可以從任何一個感興趣的專題開始閱讀,但是每個部分中的各個章節間有先後順序。
本書並不假設讀者在Java領域具備很專業的技術水平,因此在保證邏輯准確的前提下,盡量用通俗的語言和案例講述虛擬機中與開發關系最為密切的內容。當然學習虛擬機技術本身就需要讀者有一定的技術基礎,且本書的讀者定位是中、高級程序員,因此本書假設讀者自己了解一些常用的開發框架、Java API和Java語法等基礎知識。
語言約定
本書在語言和技術上有如下的約定:
本書中提到HotSpot虛擬機、JRockit虛擬機、WebLogic伺服器等產品的所有者時,仍然使用Sun和BEA公司的名稱。實際上BEA和Sun分別於2008年和2010年被Oracle公司收購,現在已經不存在這兩個商標了,但是毫無疑問它們都是對Java領域做出過卓越貢獻的、值得程序員紀念的公司。
JDK從1.5版本開始,在官方的正式文檔與宣傳資料中已經不再使用類似「JDK 1.5」的名稱,只有在程序員內部使用的開發版本號 (Developer Version,例如java -version的輸出)中才繼續沿用1.5、1.6和1.7的版本號,而公開版本號(Proct Version)則改為JDK 5、JDK 6和JDK 7的命名方式。為了行文一致,本書所有場合統一採用開發版本號的命名方式。
由於版面關系,本書中的許多示例代碼都沒有遵循最優的代碼編寫風格,如使用的流沒有關閉流等,請讀者在閱讀時注意這一點。
如果沒有特殊說明,本書中所有的討論都是以Sun JDK 1.6為技術平台的。不過如果有某個特性在各個版本間的變化較大,一般都會說明它在各個版本間的差異。 第一部分走近Java
本書的第一部分為後文的講解建立了良好的基礎。盡管了解Java技術的來龍去脈,以及編譯自己的OpenJDK對於讀者理解Java虛擬機並不是必需的,但是這些准備過程可以為走近Java技術和Java虛擬機提供很好的引導。第一部分只有第1章:
第1章介紹了Java技術體系的過去、現在和未來的發展趨勢,並介紹了如何獨立編譯一個OpenJDK 7。
第二部分自動內存管理機制
因為程序員把內存控制的權力交給了Java虛擬機,所以可以在編碼的時候享受自動內存管理的諸多優勢,不過也正因為這個原因,一旦出現內存泄漏和溢出方面的問題,如果不了解虛擬機是怎樣使用內存的,那麼排查錯誤將會成為一項異常艱難的工作。第二部分包括第2~5章:
第2章講解了虛擬機中的內存是如何劃分的,哪部分區域、什麼樣的代碼和操作可能導致內存溢出異常,並講解了各個區域出現內存溢出異常的常見原因。
第3章分析了垃圾收集的演算法和JDK 1.6中提供的幾款垃圾收集器的特點及運作原理,通過代碼實例驗證了Java虛擬機中的自動內存分配及回收的主要規則。
第4章介紹了隨JDK發布的6個命令行工具與2個可視化的故障處理工具的使用方法。
第5章與讀者分享了幾個比較有代表性的實際案例,還准備了一個所有開發人員都能「親身實戰」的練習,讀者可通過實踐來獲得故障處理和調優的經驗。
第三部分虛擬機執行子系統
執行子系統是虛擬機中必不可少的組成部分,了解了虛擬機如何執行程序,才能寫出更優秀的代碼。第三部分包括第6~9章:
第6章講解了Class文件結構中的各個組成部分,以及每個部分的定義、數據結構和使用方法,以實戰的方式演示了Class的數據是如何存儲和訪問的。
第7章介紹了在類載入過程的「載入」、「驗證」、「准備」、「解析」和「初始化」這五個階段中虛擬機分別執行了哪些動作,還介紹了類載入器的工作原理及其對虛擬機的意義。
第8章分析了虛擬機在執行代碼時如何找到正確的方法,如何執行方法內的位元組碼,以及執行代碼時涉及的內存結構。
第9章通過四個類載入及執行子系統的案例,分享了使用類載入器和處理位元組碼的一些值得欣賞和借鑒的思路,並通過一個實戰練習來加深對前面理論知識的理解。
第四部分程序編譯與代碼優化
Java程序從源碼編譯成位元組碼和從位元組碼編譯成本地機器碼的這兩個過程,合並起來其實就等同於一個傳統編譯器所執行的編譯過程。第四部分包括第10和11章:
第10章分析了Java語言中的泛型、自動裝箱拆箱、條件編譯等多種語法糖的前因後果,並通過實戰案例演示了如何使用插入式註解處理器來實現一個檢查程序命名規范的編譯器插件。
第11章講解了虛擬機的熱點探測方法、HotSpot的即時編譯器、編譯觸發條件,以及如何從虛擬機外部觀察和分析JIT編譯的數據和結果。此外,還講解了幾種常見的編譯期優化技術。
第五部分高效並發
Java語言和虛擬機提供了原生的、完善的多線程支持,使得它天生就適合開發多線程並發的應用程序。不過我們不能期望系統來完成所有與並發相關的處理,了解並發的內幕也是一個高級程序員不可缺少的課程。第五部分包括第12和13章:
第12章講解了虛擬機的Java內存模型的結構和操作,以及原子性、可見性和有序性在Java內存模型中的體現,介紹了先行發生原則及使用,還講解了線程在Java語言中是如何實現的。
第13章介紹了線程安全所涉及的概念和分類、同步實現的方式以及虛擬機的底層運作原理,並且還介紹了虛擬機實現高效並發所採取的一系列鎖優化措施。

閱讀全文

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

熱點內容
萊陽到青島源碼 瀏覽:385
php顯示星期幾 瀏覽:169
phpfun 瀏覽:868
wdcpphp安裝路徑 瀏覽:112
python拼音多音字 瀏覽:501
發動機壓縮比951 瀏覽:473
androidnetfilter 瀏覽:559
ci隱藏indexphp 瀏覽:439
視頻外發加密軟體限次數播放 瀏覽:680
刺激戰場輕量服怎麼換伺服器 瀏覽:492
一般買書上什麼app 瀏覽:220
php開發框架2017 瀏覽:69
電腦控制單片機 瀏覽:626
ios15如何修改app名稱 瀏覽:862
linuxphp安裝mysql資料庫 瀏覽:271
程序員怎麼鍛煉身體 瀏覽:102
電表伺服器斷開是什麼意思 瀏覽:810
華為伺服器的許可id怎麼找 瀏覽:89
程序員吃雞比賽 瀏覽:890
筆記本電腦加密軟體 瀏覽:94