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

深入理解Java虛擬機(第3版) pdf epub mobi txt 電子書 下載2025

出版者:機械工業齣版社
作者:周誌明
出品人:
頁數:540
译者:
出版時間:2019-12
價格:129.00元
裝幀:平裝
isbn號碼:9787111641247
叢書系列:華章原創精品
圖書標籤:
  • JVM
  • Java
  • java虛擬機
  • 計算機
  • jvm
  • java
  • 虛擬機
  • 計算機科學
  • Java
  • 虛擬機
  • 深入理解
  • JVM
  • 內存模型
  • 並發編程
  • 垃圾迴收
  • 字節碼
  • 高性能
  • 架構設計
想要找書就要到 小美書屋
立刻按 ctrl+D收藏本頁
你會得到大驚喜!!

具體描述

內容介紹

這是一部從工作原理和工程實踐兩個維度深入剖析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
第1章 走近Java 2
1.1 概述 2
1.2 Java技術體係 3
1.3 Java發展史 4
1.4 Java虛擬機傢族 12
1.4.1 虛擬機始祖:Sun Classic/Exact VM 12
1.4.2 武林盟主:HotSpot VM 13
1.4.3 小傢碧玉:Mobile/Embedded VM 14
1.4.4 天下第二:BEA JRockit/IBM J9 VM 15
1.4.5 軟硬閤璧:BEA Liquid VM/Azul VM 16
1.4.6 挑戰者:Apache Harmony/Google Android Dalvik VM 17
1.4.7 沒有成功,但並非失敗:Microsoft JVM及其他 18
1.4.8 百傢爭鳴 19
1.5 展望Java技術的未來 21
1.5.1 無語言傾嚮 21
1.5.2 新一代即時編譯器 23
1.5.3 嚮Native邁進 24
1.5.4 靈活的胖子 26
1.5.5 語言語法持續增強 27
1.6 實戰:自己編譯JDK 29
1.6.1 獲取源碼 29
1.6.2 係統需求 31
1.6.3 構建編譯環境 33
1.6.4 進行編譯 34
1.6.5 在IDE工具中進行源碼調試 36
1.7 本章小結 39
第二部分 自動內存管理
第2章 Java內存區域與內存溢齣異常 42
2.1 概述 42
2.2 運行時數據區域 42
2.2.1 程序計數器 43
2.2.2 Java虛擬機棧 43
2.2.3 本地方法棧 44
2.2.4 Java堆 44
2.2.5 方法區 46
2.2.6 運行時常量池 47
2.2.7 直接內存 47
2.3 HotSpot虛擬機對象探秘 48
2.3.1 對象的創建 48
2.3.2 對象的內存布局 51
2.3.3 對象的訪問定位 52
2.4 實戰:OutOfMemoryError異常 53
2.4.1 Java堆溢齣 54
2.4.2 虛擬機棧和本地方法棧溢齣 56
2.4.3 方法區和運行時常量池溢齣 61
2.4.4 本機直接內存溢齣 65
2.5 本章小結 66
第3章 垃圾收集器與內存分配策略 67
3.1 概述 67
3.2 對象已死? 68
3.2.1 引用計數算法 68
3.2.2 可達性分析算法 70
3.2.3 再談引用 71
3.2.4 生存還是死亡? 72
3.2.5 迴收方法區 74
3.3 垃圾收集算法 75
3.3.1 分代收集理論 75
3.3.2 標記-清除算法 77
3.3.3 標記-復製算法 78
3.3.4 標記-整理算法 79
3.4 HotSpot的算法細節實現 81
3.4.1 根節點枚舉 81
3.4.2 安全點 82
3.4.3 安全區域 83
3.4.4 記憶集與卡錶 84
3.4.5 寫屏障 85
3.4.6 並發的可達性分析 87
3.5 經典垃圾收集器 89
3.5.1 Serial收集器 90
3.5.2 ParNew收集器 92
3.5.3 Parallel Scavenge收集器 93
3.5.4 Serial Old收集器 94
3.5.5 Parallel Old收集器 95
3.5.6 CMS收集器 96
3.5.7 Garbage First收集器 98
3.6 低延遲垃圾收集器 104
3.6.1 Shenandoah收集器 105
3.6.2 ZGC收集器 112
3.7 選擇閤適的垃圾收集器 121
3.7.1 Epsilon收集器 121
3.7.2 收集器的權衡 121
3.7.3 虛擬機及垃圾收集器日誌 122
3.7.4 垃圾收集器參數總結 127
3.8 實戰:內存分配與迴收策略 129
3.8.1 對象優先在Eden分配 130
3.8.2 大對象直接進入老年代 131
3.8.3 長期存活的對象將進入老年代 132
3.8.4 動態對象年齡判定 134
3.8.5 空間分配擔保 135
3.9 本章小結 137
第4章 虛擬機性能監控、故障處理工具 138
4.1 概述 138
4.2 基礎故障處理工具 138
4.2.1 jps:虛擬機進程狀況工具 141
4.2.2 jstat:虛擬機統計信息監視工具 142
4.2.3 jinfo:Java配置信息工具 143
4.2.4 jmap:Java內存映像工具 144
4.2.5 jhat:虛擬機堆轉儲快照分析工具 145
4.2.6 jstack:Java堆棧跟蹤工具 146
4.2.7 基礎工具總結 148
4.3 可視化故障處理工具 151
4.3.1 JHSDB:基於服務性代理的調試工具 152
4.3.2 JConsole:Java監視與管理控製颱 157
4.3.3 VisualVM:多閤-故障處理工具 164
4.3.4 Java Mission Control:可持續在綫的監控工具 171
4.4 HotSpot虛擬機插件及工具 175
4.5 本章小結 180
第5章 調優案例分析與實戰 181
5.1 概述 181
5.2 案例分析 181
5.2.1 大內存硬件上的程序部署策略 182
5.2.2 集群間同步導緻的內存溢齣 184
5.2.3 堆外內存導緻的溢齣錯誤 185
5.2.4 外部命令導緻係統緩慢 187
5.2.5 服務器虛擬機進程崩潰 187
5.2.6 不恰當數據結構導緻內存占用過大 188
5.2.7 由Windows虛擬內存導緻的長時間停頓 189
5.2.8 由安全點導緻長時間停頓 190
5.3 實戰:Eclipse運行速度調優 192
5.3.1 調優前的程序運行狀態 193
5.3.2 升級JDK版本的性能變化及兼容問題 196
5.3.3 編譯時間和類加載時間的優化 200
5.3.4 調整內存設置控製垃圾收集頻率 203
5.3.5 選擇收集器降低延遲 206
5.4 本章小結 209
第三部分 虛擬機執行子係統
第6章 類文件結構 212
6.1 概述 212
6.2 無關性的基石 212
6.3 Class類文件的結構 214
6.3.1 魔數與Class文件的版本 215
6.3.2 常量池 218
6.3.3 訪問標誌 224
6.3.4 類索引、父類索引與接口索引集閤 225
6.3.5 字段錶集閤 226
6.3.6 方法錶集閤 229
6.3.7 屬性錶集閤 230
6.4 字節碼指令簡介 251
6.4.1 字節碼與數據類型 251
6.4.2 加載和存儲指令 253
6.4.3 運算指令 254
6.4.4 類型轉換指令 255
6.4.5 對象創建與訪問指令 256
6.4.6 操作數棧管理指令 256
6.4.7 控製轉移指令 257
6.4.8 方法調用和返迴指令 257
6.4.9 異常處理指令 258
6.4.10 同步指令 258
6.5 公有設計,私有實現 259
6.6 Class文件結構的發展 260
6.7 本章小結 261
第7章 虛擬機類加載機製 262
7.1 概述 262
7.2 類加載的時機 263
7.3 類加載的過程 267
7.3.1 加載 267
7.3.2 驗證 268
7.3.3 準備 271
7.3.4 解析 272
7.3.5 初始化 277
7.4 類加載器 279
7.4.1 類與類加載器 280
7.4.2 雙親委派模型 281
7.4.3 破壞雙親委派模型 285
7.5 Java模塊化係統 287
7.5.1 模塊的兼容性 288
7.5.2 模塊化下的類加載器 290
7.6 本章小結 292
第8章 虛擬機字節碼執行引擎 293
8.1 概述 293
8.2 運行時棧幀結構 294
8.2.1 局部變量錶 294
8.2.2 操作數棧 299
8.2.3 動態連接 300
8.2.4 方法返迴地址 300
8.2.5 附加信息 301
8.3 方法調用 301
8.3.1 解析 301
8.3.2 分派 303
8.4 動態類型語言支持 315
8.4.1 動態類型語言 316
8.4.2 Java與動態類型 317
8.4.3 java.lang.invoke包 318
8.4.4 invokedynamic指令 321
8.4.5 實戰:掌控方法分派規則 324
8.5 基於棧的字節碼解釋執行引擎 326
8.5.1 解釋執行 327
8.5.2 基於棧的指令集與基於寄存器的指令集 328
8.5.3 基於棧的解釋器執行過程 329
8.6 本章小結 334
第9章 類加載及執行子係統的案例與實戰 335
9.1 概述 335
9.2 案例分析 335
9.2.1 Tomcat:正統的類加載器架構 335
9.2.2 OSGi:靈活的類加載器架構 338
9.2.3 字節碼生成技術與動態代理的實現 341
9.2.4 Backport工具:Java的時光機器 345
9.3 實戰:自己動手實現遠程執行功能 348
9.3.1 目標 348
9.3.2 思路 349
9.3.3 實現 350
9.3.4 驗證 355
9.4 本章小結 356
第四部分 程序編譯與代碼優化
第10章 前端編譯與優化 358
10.1 概述 358
10.2 Javac編譯器 359
10.2.1 Javac的源碼與調試 359
10.2.2 解析與填充符號錶 362
10.2.3 注解處理器 363
10.2.4 語義分析與字節碼生成 364
10.3 Java語法糖的味道 367
10.3.1 泛型 367
10.3.2 自動裝箱、拆箱與遍曆循環 375
10.3.3 條件編譯 377
10.4 實戰:插入式注解處理器 378
10.4.1 實戰目標 379
10.4.2 代碼實現 379
10.4.3 運行與測試 385
10.4.4 其他應用案例 386
10.5 本章小結 386
第11章 後端編譯與優化 388
11.1 概述 388
11.2 即時編譯器 389
11.2.1 解釋器與編譯器 389
11.2.2 編譯對象與觸發條件 392
11.2.3 編譯過程 397
11.2.4 實戰:查看及分析即時編譯結果 398
11.3 提前編譯器 404
11.3.1 提前編譯的優劣得失 405
11.3.2 實戰:Jaotc的提前編譯 408
11.4 編譯器優化技術 411
11.4.1 優化技術概覽 411
11.4.2 方法內聯 415
11.4.3 逃逸分析 417
11.4.4 公共子錶達式消除 420
11.4.5 數組邊界檢查消除 421
11.5 實戰:深入理解Graal編譯器 423
11.5.1 曆史背景 423
11.5.2 構建編譯調試環境 424
11.5.3 JVMCI編譯器接口 426
11.5.4 代碼中間錶示 429
11.5.5 代碼優化與生成 432
11.6 本章小結 436
第五部分 高效並發
第12章 Java內存模型與綫程 438
12.1 概述 438
12.2 硬件的效率與一緻性 439
12.3 Java內存模型 440
12.3.1 主內存與工作內存 441
12.3.2 內存間交互操作 442
12.3.3 對於volatile型變量的特殊規則 444
12.3.4 針對long和double型變量的特殊規則 450
12.3.5 原子性、可見性與有序性 450
12.3.6 先行發生原則 452
12.4 Java與綫程 455
12.4.1 綫程的實現 455
12.4.2 Java綫程調度 458
12.4.3 狀態轉換 460
12.5 Java與協程 461
12.5.1 內核綫程的局限 461
12.5.2 協程的復蘇 462
12.5.3 Java的解決方案 464
12.6 本章小結 465
第13章 綫程安全與鎖優化 466
13.1 概述 466
13.2 綫程安全 466
13.2.1 Java語言中的綫程安全 467
13.2.2 綫程安全的實現方法 471
13.3 鎖優化 479
13.3.1 自鏇鎖與自適應自鏇 479
13.3.2 鎖消除 480
13.3.3 鎖粗化 481
13.3.4 輕量級鎖 481
13.3.5 偏嚮鎖 483
13.4 本章小結 485
附錄A 在Windows係統下編譯OpenJDK 6 486
附錄B 展望Java技術的未來(2013年版) 493
附錄C 虛擬機字節碼指令錶 499
附錄D 對象查詢語言(OQL)簡介 506
附錄E JDK曆史版本軌跡 512
· · · · · · (收起)

讀後感

評分

如标题 首先很佩服、欣喜能看到国人出的关于Java虚拟机的书 写了4年java代码,对虚拟机是从没认真了解过 看到书名“深入理解……”,果断网购阅读 读完后,总感觉,还缺点儿啥,貌似自己的一些问题在书中未能找到答案 不过,总体上来说,也是有收获的,稍有【遗憾】的是书中提...  

評分

如标题 首先很佩服、欣喜能看到国人出的关于Java虚拟机的书 写了4年java代码,对虚拟机是从没认真了解过 看到书名“深入理解……”,果断网购阅读 读完后,总感觉,还缺点儿啥,貌似自己的一些问题在书中未能找到答案 不过,总体上来说,也是有收获的,稍有【遗憾】的是书中提...  

評分

这本书我读到第8章,之后就是在读不下去了。 读到后面是一种痛苦的体验,太多的东西是不全面的,大量的专有名词是没有解释的,读到最后很多东西仅仅是一个侧面,所以我觉得,这本书不适合初学者看,很适合有一定理论基础而缺乏实践的人去读。 有时候...  

評分

这本书我读到第8章,之后就是在读不下去了。 读到后面是一种痛苦的体验,太多的东西是不全面的,大量的专有名词是没有解释的,读到最后很多东西仅仅是一个侧面,所以我觉得,这本书不适合初学者看,很适合有一定理论基础而缺乏实践的人去读。 有时候...  

評分

用戶評價

评分

不愧經典

评分

不愧經典

评分

我囤瞭許多技術類書籍,但偏偏java虛擬機一本沒屯,本來想囤周的java虛擬機第二版,藉瞭同事的看瞭下,從Java虛擬機的內存管理(內存區域劃分、垃圾收集的算法和實現、性能監控和調優實戰)講起,接著介紹虛擬機如何執行(類文件的結構、類加載機製、字節碼執行引擎介紹),最後還介紹瞭編譯優化和高效並發部分。對Java開發有一個係統清晰的闡述,使得我們對虛擬機如何執行和高效執行我們所寫的代碼有更深層的認識,在發生內存溢齣或者性能相關問題時能提供很好的理論基礎。總之,是難得的一本中文技術好書。,隻是因為第二版時間太久瞭,雖然,是好書,但是,技術是會過時的,所以,我一直期待作者齣新的,為此,我還去作者微博催瞭幾次,每隔幾個月就會有一點進展,直到現在,書已經新鮮齣爐,必定又會是一本經典暢銷書,我十分期

评分

無它,就想給個五分

评分

後幾章因為編譯原理忘的差不多,看著比較痛苦。總體無可言述。裏麵一些實例需要更新,雖然legacy code比較多,但是可以看早期版本,新版需要介紹新特性。另外開發工具能否用vscode,這個是主流,編譯完jdk12後麵就沒怎麼介紹12,現在14都齣來瞭。估計作者也無暇,因為新特性要瞭解學習需要時間積纍。多綫程與並發未來會繼續發展,未來新語言如何?祝Java一路走好。

本站所有內容均為互聯網搜索引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度google,bing,sogou

© 2025 book.quotespace.org All Rights Reserved. 小美書屋 版权所有