注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當前位置: 首頁出版圖書科學(xué)技術(shù)計算機/網(wǎng)絡(luò)軟件與程序設(shè)計JAVA及其相關(guān)深入理解Java虛擬機:JVM高級特性與最佳實踐(第2版)

深入理解Java虛擬機:JVM高級特性與最佳實踐(第2版)

深入理解Java虛擬機:JVM高級特性與最佳實踐(第2版)

定 價:¥79.00

作 者: 周志明著
出版社: 機械工業(yè)出版社
叢編項:
標 簽: Java Java Script J2EE 程序設(shè)計 計算機/網(wǎng)絡(luò)

ISBN: 9787111421900 出版時間: 2013-05-30 包裝: 平裝
開本: 16 頁數(shù): 452 字數(shù):  

內(nèi)容簡介

  《深入理解Java虛擬機:JVM高級特性與最佳實踐》第1版兩年內(nèi)印刷近10次,4家網(wǎng)上書店的評論近4?000條,98%以上的評論全部為5星級的好評,是整個Java圖書領(lǐng)域公認的經(jīng)典著作和超級暢銷書,繁體版在臺灣也十分受歡迎。第2版在第1版的基礎(chǔ)上做了很大的改進:根據(jù)最新的JDK 1.7對全書內(nèi)容進行了全面的升級和補充;增加了大量處理各種常見JVM問題的技巧和最佳實踐;增加了若干與生產(chǎn)環(huán)境相結(jié)合的實戰(zhàn)案例;對第1版中的錯誤和不足之處的修正;等等。第2版不僅技術(shù)更新、內(nèi)容更豐富,而且實戰(zhàn)性更強?!渡钊肜斫釰ava虛擬機:JVM高級特性與最佳實踐》共分為五大部分,圍繞內(nèi)存管理、執(zhí)行子系統(tǒng)、程序編譯與優(yōu)化、高效并發(fā)等核心主題對JVM進行了全面而深入的分析,深刻揭示了JVM的工作原理。第一部分從宏觀的角度介紹了整個Java技術(shù)體系、Java和JVM的發(fā)展歷程、模塊化,以及JDK的編譯,這對理解本書后面內(nèi)容有重要幫助。第二部分講解了JVM的自動內(nèi)存管理,包括虛擬機內(nèi)存區(qū)域的劃分原理以及各種內(nèi)存溢出異常產(chǎn)生的原因;常見的垃圾收集算法以及垃圾收集器的特點和工作原理;常見虛擬機監(jiān)控與故障處理工具的原理和使用方法。第三部分分析了虛擬機的執(zhí)行子系統(tǒng),包括類文件結(jié)構(gòu)、虛擬機類加載機制、虛擬機字節(jié)碼執(zhí)行引擎。第四部分講解了程序的編譯與代碼的優(yōu)化,闡述了泛型、自動裝箱拆箱、條件編譯等語法糖的原理;講解了虛擬機的熱點探測方法、HotSpot的即時編譯器、編譯觸發(fā)條件,以及如何從虛擬機外部觀察和分析JIT編譯的數(shù)據(jù)和結(jié)果;第五部分探討了Java實現(xiàn)高效并發(fā)的原理,包括JVM內(nèi)存模型的結(jié)構(gòu)和操作;原子性、可見性和有序性在Java內(nèi)存模型中的體現(xiàn);先行發(fā)生原則的規(guī)則和使用;線程在Java語言中的實現(xiàn)原理;虛擬機實現(xiàn)高效并發(fā)所做的一系列鎖優(yōu)化措施。

作者簡介

  周志明,資深Java技術(shù)專家,對JavaEE企業(yè)級應(yīng)用開發(fā)、OSGi、Java虛擬機和工作流等都有深入的研究,并在大量的實踐中積累了豐富的經(jīng)驗。尤其精通Java虛擬機,撰寫了大量與JVM相關(guān)的經(jīng)典文章,被各大技術(shù)社區(qū)爭相轉(zhuǎn)載,是ITeye等技術(shù)社區(qū)公認的Java虛擬機方面的領(lǐng)袖人物之一。除本書外,還著有經(jīng)典著作《深入理解OSGi:Equinox原理、應(yīng)用與最佳實踐》,廣獲讀者好評?,F(xiàn)任遠光軟件股份有限公司開發(fā)部總經(jīng)理兼架構(gòu)師,先后參與過國家電網(wǎng)、南方電網(wǎng)等多個國家級大型ERP項目的平臺架構(gòu)工作,對軟件系統(tǒng)架構(gòu)也有深刻的認識和體會。

圖書目錄

目  錄
前言
第一部分 走近Java
第1章 走近Java / 2
1.1 概述 / 2
1.2 Java技術(shù)體系 / 3
1.3 Java發(fā)展史 / 5
1.4 Java虛擬機發(fā)展史 / 9
1.4.1 Sun Classic / Exact VM / 9
1.4.2 Sun HotSpot VM / 11
1.4.3 Sun Mobile-Embedded VM / Meta-Circular VM / 12
1.4.4 BEA JRockit / IBM J9 VM / 13
1.4.5 Azul VM / BEA Liquid VM / 14
1.4.6 Apache Harmony / Google Android Dalvik VM / 14
1.4.7 Microsoft JVM及其他 / 15
1.5 展望Java技術(shù)的未來 / 16
1.5.1 模塊化 / 17
1.5.2 混合語言 / 17
1.5.3 多核并行 / 19
1.5.4 進一步豐富語法 / 20
1.5.5 64位虛擬機 / 21
1.6 實戰(zhàn):自己編譯JDK / 22
1.6.1 獲取JDK源碼 / 22
1.6.2 系統(tǒng)需求 / 24
1.6.3 構(gòu)建編譯環(huán)境 / 25
1.6.4 進行編譯 / 26
1.6.5 在IDE工具中進行源碼調(diào)試 / 31
1.7 本章小結(jié) / 35
第二部分 自動內(nèi)存管理機制
第2章 Java內(nèi)存區(qū)域與內(nèi)存溢出異常 / 38
2.1 概述 / 38
2.2 運行時數(shù)據(jù)區(qū)域 / 38
2.2.1 程序計數(shù)器 / 39
2.2.2 Java虛擬機棧 / 39
2.2.3 本地方法棧 / 40
2.2.4 Java堆 / 41
2.2.5 方法區(qū) / 41
2.2.6 運行時常量池 / 42
2.2.7 直接內(nèi)存 / 43
2.3 HotSpot虛擬機對象探秘 / 43
2.3.1 對象的創(chuàng)建  / 44
2.3.2 對象的內(nèi)存布局  / 47
2.3.3 對象的訪問定位  / 48
2.4 實戰(zhàn):OutOfMemoryError異常 / 50
2.4.1 Java堆溢出 / 51
2.4.2 虛擬機棧和本地方法棧溢出 / 53
2.4.3 方法區(qū)和運行時常量池溢出 / 56
2.4.4 本機直接內(nèi)存溢出 / 59
2.5 本章小結(jié) / 60
第3章 垃圾收集器與內(nèi)存分配策略 / 61
3.1 概述 / 61
3.2 對象已死嗎 / 62
3.2.1 引用計數(shù)算法 / 62
3.2.2 可達性分析算法 / 64
3.2.3 再談引用 / 65
3.2.4 生存還是死亡 / 66
3.2.5 回收方法區(qū) / 68
3.3 垃圾收集算法 / 69
3.3.1 標記-清除算法 / 69
3.3.2 復(fù)制算法 / 70
3.3.3 標記-整理算法 / 71
3.3.4 分代收集算法 / 72
3.4 HotSpot的算法實現(xiàn) / 72
3.4.1 枚舉根節(jié)點 / 72
3.4.2 安全點 / 73
3.4.3 安全區(qū)域 / 74
3.5 垃圾收集器 / 75
3.5.1 Serial收集器 / 76
3.5.2 ParNew收集器 / 77
3.5.3 Parallel Scavenge收集器 / 79
3.5.4 Serial Old收集器 / 80
3.5.5 Parallel Old收集器 / 80
3.5.6 CMS收集器 / 81
3.5.7 G1收集器 / 84
3.5.8 理解GC日志 / 89
3.5.9 垃圾收集器參數(shù)總結(jié) / 90
3.6 內(nèi)存分配與回收策略 / 91
3.6.1 對象優(yōu)先在Eden分配 / 91
3.6.2 大對象直接進入老年代 / 93
3.6.3 長期存活的對象將進入老年代 / 95
3.6.4 動態(tài)對象年齡判定 / 97
3.6.5 空間分配擔(dān)保 / 98
3.7 本章小結(jié) / 100
第4章 虛擬機性能監(jiān)控與故障處理工具 / 101
4.1 概述 / 101
4.2 JDK的命令行工具 / 101
4.2.1 jps:虛擬機進程狀況工具 / 104
4.2.2 jstat:虛擬機統(tǒng)計信息監(jiān)視工具 / 105
4.2.3 jinfo:Java配置信息工具 / 106
4.2.4 jmap:Java內(nèi)存映像工具 / 107
4.2.5 jhat:虛擬機堆轉(zhuǎn)儲快照分析工具 / 108
4.2.6 jstack:Java堆棧跟蹤工具 / 109
4.2.7 HSDIS:JIT生成代碼反匯編 / 111
4.3 JDK的可視化工具 / 114
4.3.1 JConsole:Java監(jiān)視與管理控制臺 / 115
4.3.2 VisualVM:多合一故障處理工具 / 122
4.4 本章小結(jié) / 131
第5章 調(diào)優(yōu)案例分析與實戰(zhàn) / 132
5.1 概述 / 132
5.2 案例分析 / 132
5.2.1 高性能硬件上的程序部署策略 / 132
5.2.2 集群間同步導(dǎo)致的內(nèi)存溢出 / 135
5.2.3 堆外內(nèi)存導(dǎo)致的溢出錯誤 / 136
5.2.4 外部命令導(dǎo)致系統(tǒng)緩慢 / 137
5.2.5 服務(wù)器JVM進程崩潰 / 138
5.2.6 不恰當數(shù)據(jù)結(jié)構(gòu)導(dǎo)致內(nèi)存占用過大 / 139
5.2.7 由Windows虛擬內(nèi)存導(dǎo)致的長時間停頓 / 141
5.3 實戰(zhàn):Eclipse運行速度調(diào)優(yōu) / 142
5.3.1 調(diào)優(yōu)前的程序運行狀態(tài) / 142
5.3.2 升級JDK 1.6的性能變化及兼容問題 / 145
5.3.3 編譯時間和類加載時間的優(yōu)化 / 150
5.3.4 調(diào)整內(nèi)存設(shè)置控制垃圾收集頻率 / 153
5.3.5 選擇收集器降低延遲 / 157
5.4 本章小結(jié) / 160
第三部分 虛擬機執(zhí)行子系統(tǒng)
第6章 類文件結(jié)構(gòu) / 162
6.1 概述 / 162
6.2 無關(guān)性的基石 / 162
6.3 Class類文件的結(jié)構(gòu) / 164
6.3.1 魔數(shù)與Class文件的版本 / 166
6.3.2 常量池 / 167
6.3.3 訪問標志 / 173
6.3.4 類索引、父類索引與接口索引集合 / 174
6.3.5 字段表集合 / 175
6.3.6 方法表集合 / 178
6.3.7 屬性表集合 / 180
6.4 字節(jié)碼指令簡介 / 196
6.4.1 字節(jié)碼與數(shù)據(jù)類型 / 197
6.4.2 加載和存儲指令 / 199
6.4.3 運算指令 / 200
6.4.4 類型轉(zhuǎn)換指令 / 202
6.4.5 對象創(chuàng)建與訪問指令 / 203
6.4.6 操作數(shù)棧管理指令 / 203
6.4.7 控制轉(zhuǎn)移指令 / 204
6.4.8 方法調(diào)用和返回指令 / 204
6.4.9 異常處理指令 / 205
6.4.10 同步指令 / 205
6.5 公有設(shè)計和私有實現(xiàn) / 206
6.6 Class文件結(jié)構(gòu)的發(fā)展 / 207
6.7 本章小結(jié) / 208
第7章 虛擬機類加載機制 / 209
7.1 概述 / 209
7.2 類加載的時機 / 210
7.3 類加載的過程 / 214
7.3.1 加載 / 214
7.3.2 驗證 / 216
7.3.3 準備 / 219
7.3.4 解析 / 220
7.3.5 初始化 / 225
7.4 類加載器 / 227
7.4.1 類與類加載器 / 228
7.4.2 雙親委派模型 / 229
7.4.3 破壞雙親委派模型 / 233
7.5 本章小結(jié) / 235
第8章 虛擬機字節(jié)碼執(zhí)行引擎 / 236
8.1 概述 / 236
8.2 運行時棧幀結(jié)構(gòu) / 236
8.2.1 局部變量表 / 238
8.2.2 操作數(shù)棧 / 242
8.2.3 動態(tài)連接 / 243
8.2.4 方法返回地址 / 243
8.2.5 附加信息 / 244
8.3 方法調(diào)用 / 244
8.3.1 解析 / 244
8.3.2 分派 / 246
8.3.3 動態(tài)類型語言支持 / 258
8.4 基于棧的字節(jié)碼解釋執(zhí)行引擎 / 269
8.4.1 解釋執(zhí)行 / 269
8.4.2 基于棧的指令集與基于寄存器的指令集 / 270
8.4.3 基于棧的解釋器執(zhí)行過程 / 272
8.5 本章小結(jié) / 275
第9章 類加載及執(zhí)行子系統(tǒng)的案例與實戰(zhàn) / 276
9.1 概述 / 276
9.2 案例分析 / 276
9.2.1 Tomcat:正統(tǒng)的類加載器架構(gòu) / 276
9.2.2 OSGi:靈活的類加載器架構(gòu) / 279
9.2.3 字節(jié)碼生成技術(shù)與動態(tài)代理的實現(xiàn) / 282
9.2.4 Retrotranslator:跨越JDK版本 / 286
9.3 實戰(zhàn):自己動手實現(xiàn)遠程執(zhí)行功能 / 289
9.3.1 目標 / 290
9.3.2 思路 / 290
9.3.3 實現(xiàn) / 291
9.3.4 驗證 / 298
9.4 本章小結(jié) / 299
第四部分 程序編譯與代碼優(yōu)化
第10章 早期(編譯期)優(yōu)化 / 302
10.1 概述 / 302
10.2 Javac編譯器 / 303
10.2.1 Javac的源碼與調(diào)試 / 303
10.2.2 解析與填充符號表 / 305
10.2.3 注解處理器 / 307
10.2.4 語義分析與字節(jié)碼生成 / 307
10.3 Java語法糖的味道 / 311
10.3.1 泛型與類型擦除 / 311
10.3.2 自動裝箱、拆箱與遍歷循環(huán) / 315
10.3.3 條件編譯 / 317
10.4 實戰(zhàn):插入式注解處理器 / 318
10.4.1 實戰(zhàn)目標 / 318
10.4.2 代碼實現(xiàn) / 319
10.4.3 運行與測試 / 326
10.4.4 其他應(yīng)用案例 / 327
10.5 本章小結(jié) / 328
第11章 晚期(運行期)優(yōu)化 / 329
11.1 概述 / 329
11.2 HotSpot虛擬機內(nèi)的即時編譯器 / 329
11.2.1 解釋器與編譯器 / 330
11.2.2 編譯對象與觸發(fā)條件 / 332
11.2.3 編譯過程 / 337
11.2.4 查看及分析即時編譯結(jié)果 / 339
11.3 編譯優(yōu)化技術(shù) / 345
11.3.1 優(yōu)化技術(shù)概覽 / 346
11.3.2 公共子表達式消除 / 350
11.3.3 數(shù)組邊界檢查消除 / 351
11.3.4 方法內(nèi)聯(lián) / 352
11.3.5 逃逸分析 / 354
11.4 Java與C/C++的編譯器對比 / 356
11.5 本章小結(jié) / 358
第五部分 高效并發(fā)
第12章 Java內(nèi)存模型與線程 / 360
12.1 概述 / 360
12.2 硬件的效率與一致性 / 361
12.3 Java內(nèi)存模型 / 362
12.3.1 主內(nèi)存與工作內(nèi)存 / 363
12.3.2 內(nèi)存間交互操作 / 364
12.3.3 對于volatile型變量的特殊規(guī)則 / 366
12.3.4 對于long和double型變量的特殊規(guī)則 / 372
12.3.5 原子性、可見性與有序性 / 373
12.3.6 先行發(fā)生原則 / 375
12.4 Java與線程 / 378
12.4.1 線程的實現(xiàn) / 378
12.4.2 Java線程調(diào)度 / 381
12.4.3 狀態(tài)轉(zhuǎn)換 / 383
12.5 本章小結(jié) / 384
第13章 線程安全與鎖優(yōu)化 / 385
13.1 概述 / 385
13.2 線程安全 / 385
13.2.1 Java語言中的線程安全 / 386
13.2.2 線程安全的實現(xiàn)方法 / 390
13.3 鎖優(yōu)化 / 397
13.3.1 自旋鎖與自適應(yīng)自旋 / 398
13.3.2 鎖消除 / 398
13.3.3 鎖粗化 / 400
13.3.4 輕量級鎖 / 400
13.3.5 偏向鎖 / 402
13.4 本章小結(jié) / 403
附  錄
附錄A 編譯Windows版的OpenJDK / 406
附錄B 虛擬機字節(jié)碼指令表 / 414
附錄C HotSpot虛擬機主要參數(shù)表 / 420
附錄D 對象查詢語言(OQL)簡介 / 424
附錄E JDK歷史版本軌跡 / 430

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) m.ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號