注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當前位置: 首頁出版圖書科學技術(shù)計算機/網(wǎng)絡軟件與程序設計程序設計綜合HotSpot實戰(zhàn)

HotSpot實戰(zhàn)

HotSpot實戰(zhàn)

定 價:¥69.00

作 者: 陳濤 著
出版社: 人民郵電出版社
叢編項:
標 簽: 計算機/網(wǎng)絡 軟件工程/開發(fā)項目管理

ISBN: 9787115343635 出版時間: 2014-03-01 包裝: 平裝
開本: 16開 頁數(shù): 347 字數(shù):  

內(nèi)容簡介

  《HotSpot實戰(zhàn)》深入淺出地講解了HotSpot虛擬機的工作原理,將隱藏在它內(nèi)部的本質(zhì)內(nèi)容逐一呈現(xiàn)在讀者面前,包括OpenJDK與HotSpot項目、編譯和調(diào)試HotSpot的方法、HotSpot內(nèi)核結(jié)構(gòu)、Launcher、OOP-Klass對象表示系統(tǒng)、鏈接、運行時數(shù)據(jù)區(qū)、方法區(qū)、常量池和常量池Cache、Perf Data、Crash分析方法、轉(zhuǎn)儲分析方法、垃圾收集器的設計演進、CMS和G1收集器、棧、JVM對硬件寄存器的利用、棧頂緩存技術(shù)、解釋器、字節(jié)碼表、轉(zhuǎn)發(fā)表、Stubs、Code Cache、Code生成器、JIT編譯器、C1編譯器、編譯原理、JVM指令集實現(xiàn)、函數(shù)的分發(fā)機制、VTABLE和ITABLE、異常表、虛擬機監(jiān)控工具(如jinfo、jstack、jhat、jmap等)的實現(xiàn)原理和開發(fā)方法、Attach機制、基于GUI的JVM分析工具(如MAT、VisualVM)等內(nèi)容。除了HotSpot技術(shù),《HotSpot實戰(zhàn)》還對方法論進行了探討。在各個章節(jié)的講解中,都會有一些與系統(tǒng)運行機制相關(guān)的實戰(zhàn)或練習,供讀者練手。通過這些實戰(zhàn)練習,不僅有助于讀者加深對知識或原理的理解,更為重要的是,它還可以培養(yǎng)讀者獨立探索的思維方式,這有助于讀者把知識融會貫通并靈活應用到實際項目中?!禜otSpot實戰(zhàn)》適合于已具有一定Java編程基礎的讀者,以及在Java或基于JVM的編程語言平臺下進行各類軟件開發(fā)的開發(fā)人員、測試人員和運維人員。對于JVM和編程語言愛好者來說,《HotSpot實戰(zhàn)》也具有一定的學習參考價值。

作者簡介

  陳濤,碩士,畢業(yè)于中國科技大學?,F(xiàn)就職于網(wǎng)易公司旗下的網(wǎng)易寶,從事在線支付系統(tǒng)的設計與開發(fā)工作。在從事Java工作之前 ,曾有過Linux內(nèi)核及驅(qū)動開發(fā)工作經(jīng)驗。熱衷于專研技術(shù),對編程語言和JVM比較感興趣。工作之余 ,喜歡足球和武俠帶來的樂趣。目前正在“專研”的課題是如何做一名稱職的奶爸。

圖書目錄

第1章 初識HotSpot 1
1.1 JDK概述 2
1.1.1 JCP與JSR 3
1.1.2 JDK的發(fā)展歷程 4
1.1.3 Java 7的語法變化 7
1.2 動手編譯虛擬機 13
1.2.1 源代碼下載 13
1.2.2 HotSpot源代碼結(jié)構(gòu) 13
1.2.3 搭建編譯環(huán)境 15
1.2.4 編譯目標 16
1.2.5 編譯過程 17
1.2.6 編譯常見問題 19
1.3 實戰(zhàn):在HotSpot內(nèi)調(diào)試HelloWorld 20
1.3.1 認識GDB 21
1.3.2 準備調(diào)試腳本 22
1.4 小結(jié) 26
第2章 啟動 28
2.1 HotSpot內(nèi)核 28
2.1.1 如何閱讀源代碼 28
2.1.2 HotSpot內(nèi)核框架 36
2.1.3 Prims 37
2.1.4 Services 39
2.1.5 Runtime 43
2.2 啟動 46
2.2.1 Launcher 46
2.2.2 虛擬機生命周期 48
2.2.3 入口:main函數(shù) 50
2.2.4 主線程 51
2.2.5 InitializeJVM函數(shù) 53
2.2.6 JNI_CreateJavaVM函數(shù) 55
2.2.7 調(diào)用Java主方法 56
2.2.8 JVM退出路徑 56
2.3 系統(tǒng)初始化 57
2.3.1 配置OS模塊 58
2.3.2 配置系統(tǒng)屬性 60
2.3.3 加載系統(tǒng)庫 61
2.3.4 啟動線程 62
2.3.5 vm_init_globals函數(shù):初始化全局數(shù)據(jù)結(jié)構(gòu) 65
2.3.6 init_globals函數(shù):初始化全局模塊 65
2.4 小結(jié) 69
第3章 類與對象 70
3.1 對象表示機制 71
3.1.1 OOP-Klass二分模型 71
3.1.2 Oops模塊 71
3.1.3 OOP框架與對象訪問機制 73
3.1.4 Klass與instanceKlass 79
3.1.5 實戰(zhàn):用HSDB調(diào)試HotSpot 82
3.2 類的狀態(tài)轉(zhuǎn)換 87
3.2.1 入口:Class文件 87
3.2.2 類的狀態(tài) 92
3.2.3 加載 96
3.2.4 鏈接 101
3.2.5 初始化 104
3.2.6 實戰(zhàn):類的“族譜” 107
3.2.7 實戰(zhàn):系統(tǒng)字典 111
3.3 創(chuàng)建對象 113
3.3.1 實例對象的創(chuàng)建流程 114
3.3.2 實戰(zhàn):探測JVM內(nèi)部對象 116
3.4 小結(jié) 119
第4章 運行時數(shù)據(jù)區(qū) 120
4.1 堆 121
4.1.1 Java的自動內(nèi)存管理 121
4.1.2 堆的管理 122
4.2 線程私有區(qū)域 125
4.2.1 PC 125
4.2.2 JVM?!?26
4.3 方法區(qū) 126
4.3.1 紐帶作用 127
4.3.2 常量池 130
4.3.3 常量池緩存:ConstantPoolCache 133
4.3.4 方法的表示:methodOop 134
4.3.5 方法的解析:將符號引用轉(zhuǎn)換成直接引用 138
4.3.6 代碼放在哪里:ConstMethodOop 141
4.3.7 實戰(zhàn):探測運行時常量池 142
4.4 性能監(jiān)控數(shù)據(jù)區(qū):Perf Data 147
4.4.1 描述這段空間:PerfMemory 147
4.4.2 查看 148
4.4.3 生產(chǎn) 150
4.5 轉(zhuǎn)儲 151
4.5.1 用VisualVM進行轉(zhuǎn)儲分析 151
4.5.2 JVM Crash 153
4.6 小結(jié) 158
第5章 垃圾收集 159
5.1 堆與GC 160
5.1.1 垃圾收集 160
5.1.2 分代收集 162
5.1.3 快速分配 165
5.1.4 棧上分配和逸出分析 167
5.1.5 GC公共模塊 167
5.2 垃圾收集器 170
5.2.1 設計演進 170
5.2.2 CMS收集器 175
5.2.3 G1收集器 180
5.3 實戰(zhàn):性能分析方法 184
5.3.1 獲取GC日志 184
5.3.2 GC監(jiān)控信息 187
5.3.3 內(nèi)存分析工具 189
5.3.4 選擇合適的收集器與GC性能評估 190
5.3.5 不要忽略JVM Crash日志 195
5.4 小結(jié) 196
第6章 棧 197
6.1 硬件背景:了解真實機器 198
6.1.1 程序是如何運行的 198
6.1.2 x86與棧幀 199
6.1.3 ARM對Java硬件級加速:Jazelle技術(shù) 202
6.2 Java?!?03
6.2.1 寄存器式指令集與棧式指令集 203
6.2.2 HotSpot中的棧 204
6.2.3 棧幀 207
6.2.4 充分利用寄存器資源 210
6.2.5 虛擬機如何調(diào)用Java函數(shù) 212
6.2.6 優(yōu)化:棧頂緩存 221
6.2.7 實戰(zhàn):操作數(shù)?!?23
6.3 小結(jié) 228
第7章 解釋器和即時編譯器 229
7.1 概述 230
7.2 解釋器如何工作 231
7.2.1 Interpreter模塊 232
7.2.2 Code模塊 234
7.2.3 字節(jié)碼表 235
7.2.4 Code Cache 236
7.2.5 InterpreterCodelet與Stub隊列 239
7.2.6 Code生成器 241
7.2.7 模板表與轉(zhuǎn)發(fā)表 244
7.2.8 實戰(zhàn):InterpreterCodelet 247
7.3 即時編譯器 250
7.3.1 概述 250
7.3.2 編譯器模塊 251
7.3.3 編譯器的基本結(jié)構(gòu) 252
7.3.4 實戰(zhàn):編譯原理實踐,了解編譯中間環(huán)節(jié) 255
7.4 小結(jié) 267
第8章 指令集 268
8.1 再說棧式指令集 268
8.2 數(shù)據(jù)傳送 270
8.2.1 局部變量、常量池和操作數(shù)棧之間的數(shù)據(jù)傳送 270
8.2.2 數(shù)據(jù)傳送指令 272
8.2.3 實戰(zhàn):數(shù)組的越界檢查 277
8.3 類型轉(zhuǎn)換 279
8.4 對象的創(chuàng)建和操作 281
8.5 程序流程控制 282
8.5.1 控制轉(zhuǎn)移指令 282
8.5.2 條件轉(zhuǎn)移 283
8.5.3 無條件轉(zhuǎn)移 284
8.5.4 復合條件轉(zhuǎn)移 285
8.5.5 實戰(zhàn):switch語句如何使用String 287
8.6 運算 290
8.6.1 加法:iadd 290
8.6.2 取負:ineg 291
8.7 函數(shù)的調(diào)用和返回 292
8.7.1 Java函數(shù)分發(fā)機制:VTABLE與ITABLE 293
8.7.2 invoke系列指令 297
8.7.3 動態(tài)分發(fā):覆蓋 299
8.7.4 靜態(tài)分發(fā):重載 302
8.8 異?!?05
8.8.1 異常表 305
8.8.2 創(chuàng)建異?!?06
8.8.3 try-catch 309
8.8.4 finally 311
8.9 小結(jié) 312
第9章 虛擬機監(jiān)控工具 313
9.1 Attach機制 314
9.1.1 AttachProvider與VirtualMachine 314
9.1.2 命令的下發(fā):execute() 317
9.1.3 命令的執(zhí)行:Attach Listener守護線程 319
9.2 查看JVM進程 320
9.2.1 用jps查看Java進程 320
9.2.2 實戰(zhàn):定制jps,允許查看庫路徑 323
9.3 查看和配置JVM 326
9.3.1 用jinfo查看JVM參數(shù)配置 326
9.3.2 實戰(zhàn):擴展flags選項,允許查看命令行參數(shù) 330
9.4 堆內(nèi)存轉(zhuǎn)儲工具 332
9.4.1 Heap Dump 332
9.4.2 原理 333
9.5 堆轉(zhuǎn)儲分析 337
9.5.1 Heap Dump分析工具:jhat 337
9.5.2 實戰(zhàn):MAT分析過程 340
9.6 線程轉(zhuǎn)儲分析 343
9.6.1 jstack 343
9.6.2 實戰(zhàn):如何分析資源等待 344
9.7 小結(jié) 347

本目錄推薦

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