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

深入理解Java虛擬機(jī):JVM高級(jí)特性與最佳實(shí)踐

深入理解Java虛擬機(jī):JVM高級(jí)特性與最佳實(shí)踐

定 價(jià):¥69.00

作 者: 周志明 編著
出版社: 機(jī)械工業(yè)出版社
叢編項(xiàng):
標(biāo) 簽: J2EE

ISBN: 9787111349662 出版時(shí)間: 2011-07-01 包裝: 平裝
開本: 16開 頁(yè)數(shù): 387 字?jǐn)?shù):  

內(nèi)容簡(jiǎn)介

  作為一位Java程序員,你是否也曾經(jīng)想深入理解Java虛擬機(jī),但是卻被它的復(fù)雜和深?yuàn)W拒之門外?沒(méi)關(guān)系,《深入理解Java虛擬機(jī):JVM高級(jí)特性與最佳實(shí)踐》極盡化繁為簡(jiǎn)之妙,能帶領(lǐng)你在輕松中領(lǐng)略Java虛擬機(jī)的奧秘。本書是近年來(lái)國(guó)內(nèi)出版的唯一一本與Java虛擬機(jī)相關(guān)的專著,也是唯一一本同時(shí)從核心理論和實(shí)際運(yùn)用這兩個(gè)角度去探討Java虛擬機(jī)的著作,不僅理論分析得透徹,而且書中包含的典型案例和最佳實(shí)踐也極具現(xiàn)實(shí)指導(dǎo)意義?!渡钊肜斫釰ava虛擬機(jī):JVM高級(jí)特性與最佳實(shí)踐》共分為五大部分。第一部分從宏觀的角度介紹了整個(gè)Java技術(shù)體系的過(guò)去、現(xiàn)在和未來(lái),以及如何獨(dú)立地編譯一個(gè)OpenJDK7,這對(duì)理解后面的內(nèi)容很有幫助。第二部分講解了JVM的自動(dòng)內(nèi)存管理,包括虛擬機(jī)內(nèi)存區(qū)域的劃分原理以及各種內(nèi)存溢出異常產(chǎn)生的原因;常見(jiàn)的垃圾收集算法以及垃圾收集器的特點(diǎn)和工作原理;常見(jiàn)的虛擬機(jī)的監(jiān)控與調(diào)試工具的原理和使用方法。第三部分分析了虛擬機(jī)的執(zhí)行子系統(tǒng),包括Class的文件結(jié)構(gòu)以及如何存儲(chǔ)和訪問(wèn)Class中的數(shù)據(jù);虛擬機(jī)的類創(chuàng)建機(jī)制以及類加載器的工作原理和它對(duì)虛擬機(jī)的意義;虛擬機(jī)字節(jié)碼的執(zhí)行引擎以及它在實(shí)行代碼時(shí)涉及的內(nèi)存結(jié)構(gòu)。第四部分講解了程序的編譯與代碼的優(yōu)化,闡述了泛型、自動(dòng)裝箱拆箱、條件編譯等語(yǔ)法糖的原理;講解了虛擬機(jī)的熱點(diǎn)探測(cè)方法、HotSpot的即時(shí)編譯器、編譯觸發(fā)條件,以及如何從虛擬機(jī)外部觀察和分析JIT編譯的數(shù)據(jù)和結(jié)果。第五部分探討了Java實(shí)現(xiàn)高效并發(fā)的原理,包括JVM內(nèi)存模型的結(jié)構(gòu)和操作;原子性、可見(jiàn)性和有序性在Java內(nèi)存模型中的體現(xiàn);先行發(fā)生原則的規(guī)則和使用;線程在Java語(yǔ)言中的實(shí)現(xiàn)原理;虛擬機(jī)實(shí)現(xiàn)高效并發(fā)所做的一系列鎖優(yōu)化措施。《深入理解Java虛擬機(jī):JVM高級(jí)特性與最佳實(shí)踐》適合所有Java程序員、系統(tǒng)調(diào)優(yōu)師和系統(tǒng)架構(gòu)師閱讀。

作者簡(jiǎn)介

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

圖書目錄

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

本目錄推薦

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