買這商品的人也買了...
-
學徒模式-優秀軟體開發者的養成之路 (Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman)$420$332 -
Effective JavaScript 中文版 | 駕馭 JavaScript 的 68 個具體作法 (Effective JavaScript: 68 Specific Ways to Harness the Power of JavaScript)$450$356 -
Kent Beck 的實作模式 (Implementation Patterns)$320$250 -
設計模式的解析與活用 (Design Patterns Explained: A New Perspective on Object-Oriented Design, 2/e)$480$374 -
Solr in Action (Paperback)$1,650$1,568 -
$714Effective Java, 3/e (簡體中文版) -
深入理解 Java 虛擬機:JVM 高級特性與最佳實踐, 3/e$774$735 -
$378Spring Boot 2攻略 (Spring Boot 2 Recipes: A Problem-Solution Approach) -
像程式設計師這樣思考|鍛鍊程式設計思維 (Think Like a Programmer: An Introduction to Creative Problem Solving)$400$316 -
$403深入解析 Java 虛擬機 HotSpot -
$374敏捷測試實戰指南 -
矽谷工程師教你 Kubernetes:史上最全 CI/CD 中文應用指南(iT邦幫忙鐵人賽系列書)$600$468 -
$764Spring 5 攻略 -
敏捷測試 : 以持續測試促進持續交付$779$740 -
$297CKA/CKAD 應試指南 : 從 Docker 到 Kubernetes 完全攻略 -
算法通關之路$594$564 -
$662二進制分析實戰 -
$749微服務從小白到專家 — Spring Cloud 和 Kubernetes 實戰 -
Web 應用系統安全|現代 Web 應用程式開發的資安對策 (Web Application Security)$580$458 -
Martin Fowler 的企業級軟體架構模式:軟體重構教父傳授 51個模式,活用設計思考與架構決策 (Patterns of Enterprise Application Architecture)$800$624 -
Good Code, Bad Code|寫出高品質的程式碼 (Good Code, Bad Code: Think Like a Software Engineer)$520$411 -
Test-Driven Development 學習手冊$580$458 -
建立演進式系統架構|支援常態性的變更, 2/e (Building Evolutionary Architectures: Automated Software Governance, 2/e)$580$458 -
Beyond XSS:探索網頁前端資安宇宙$880$695 -
API 設計模式|簡化整合的訊息交換技術 (Patterns for API Design: Simplifying Integration with Loosely Coupled Message Exchanges)$850$672
中文年末書展|繁簡參展書2書75折 詳見活動內容 »
-
75折
為你寫的 Vue Components:從原子到系統,一步步用設計思維打造面面俱到的元件實戰力 (iThome 鐵人賽系列書)$780$585 -
75折
BDD in Action, 2/e (中文版)$960$720 -
75折
看不見的戰場:社群、AI 與企業資安危機$750$563 -
79折
AI 精準提問 × 高效應用:DeepSeek、ChatGPT、Claude、Gemini、Copilot 一本搞定$390$308 -
7折
超實用!Word.Excel.PowerPoint 辦公室 Office 365 省時高手必備 50招, 4/e (暢銷回饋版)$420$294 -
75折
裂縫碎光:資安數位生存戰$550$412 -
85折
日本當代最強插畫 2025 : 150位當代最強畫師豪華作品集$640$544 -
79折
Google BI 解決方案:Looker Studio × AI 數據驅動行銷實作,完美整合 Google Analytics 4、Google Ads、ChatGPT、Gemini$630$498 -
79折
超有料 Plus!職場第一實用的 AI 工作術 - 用對 AI 工具、自動化 Agent, 讓生產力全面進化!$599$473 -
75折
從零開始學 Visual C# 2022 程式設計, 4/e (暢銷回饋版)$690$518 -
75折
Windows 11 制霸攻略:圖解 AI 與 Copilot 應用,輕鬆搞懂新手必學的 Windows 技巧$640$480 -
75折
精準駕馭 Word!論文寫作絕非難事 (好評回饋版)$480$360 -
Sam Yang 的插畫藝術:用 Procreate / PS 畫出最強男友視角 x 女孩美好日常$699$629 -
79折
AI 加持!Google Sheets 超級工作流$599$473 -
78折
想要 SSR? 快使用 Nuxt 吧!:Nuxt 讓 Vue.js 更好處理 SEO 搜尋引擎最佳化(iThome鐵人賽系列書)$780$608 -
78折
超實用!業務.總管.人資的辦公室 WORD 365 省時高手必備 50招 (第二版)$500$390 -
7折
Node-RED + YOLO + ESP32-CAM:AIoT 智慧物聯網與邊緣 AI 專題實戰$680$476 -
79折
「生成式⇄AI」:52 個零程式互動體驗,打造新世代人工智慧素養$599$473 -
7折
Windows APT Warfare:惡意程式前線戰術指南, 3/e$720$504 -
75折
我輩程式人:回顧從 Ada 到 AI 這條程式路,程式人如何改變世界的歷史與未來展望 (We, Programmers: A Chronicle of Coders from Ada to AI)$850$637 -
75折
不用自己寫!用 GitHub Copilot 搞定 LLM 應用開發$600$450 -
79折
Tensorflow 接班王者:Google JAX 深度學習又快又強大 (好評回饋版)$780$616 -
79折
GPT4 會你也會 - 共融機器人的多模態互動式情感分析 (好評回饋版)$700$553 -
79折
技術士技能檢定 電腦軟體應用丙級術科解題教本|Office 2021$460$363 -
75折
Notion 與 Notion AI 全能實戰手冊:生活、學習與職場的智慧策略 (暢銷回饋版)$560$420
相關主題
商品描述
本書以工業級虛擬機HotSpot的源代碼分析為基礎,詳細介紹了對象的二分模型、類的加載機制、類及常量池的解析、
方法及變量解析、對象的創建和初始化、Serial和Serial Old垃圾收集器、Java引用類型等的實現原理,
同時對重點源代碼的實現進行了詳細解讀,讓讀者真正掌握HotSpot虛擬機運行的每個細節。
本書共13章,章節的前後順序基本都是按類的生命週期進行介紹。
本書對於HotSpot VM的基礎功能模塊進行了源碼剖析,
力求交待清楚每個重要知識點的實現細節和背後的運行原理,
同時還會用大量的實例和配圖幫助讀者更好的理解。
作者簡介
馬智
結合大量實例,全面、細緻、深入地介紹HotSpot VM的運行原理;
詳細介紹如何將HotSpot VM的相關理論知識應用到開發和調優實踐中;
幫助讀者深入理解HotSpot VM如何支持Java語言的諸多特性;
幫助讀者應對大型因特網公司招聘時對虛擬機相關知識的深度考查。
目錄大綱
前言
第1章 認識HotSpot VM 1
1.1 初識JVM 1
1.2 編譯OpenJDK 8 3
1.2.1 準備編譯環境 3
1.2.2 下載源代碼 3
1.2.3 編譯源代碼 4
1.2.4 通過GDB調試源代碼 6
1.2.5 通過Eclipse調試源代碼 7
1.3 HotSpot VM源代碼結構 9
1.4 啟動HotSpot VM 11
第2章 二分模型 17
2.1 Java類的表示——Klass 17
2.1.1 Klass類 18
2.1.2 InstanceKlass類 26
2.1.3 InstanceKlass類的子類 29
2.1.4 ArrayKlass類 34
2.1.5 TypeArrayKlass類 35
2.1.6 ObjArrayKlass類 40
2.2 Java對象的表示——oop 46
2.2.1 oopDesc類 46
2.2.2 markOopDesc類 48
2.2.3 instanceOopDesc類 49
2.2.4 arrayOopDesc類 51
2.2.5 arrayOopDesc類的子類 51
2.3 操作句柄——Handle 54
2.3.1 句柄Handle的定義與創建 55
2.3.2 句柄Handle的釋放 57
第3章 類的加載 62
3.1 類加載器 62
3.1.1 引導類加載器/啟動類加載器 62
3.1.2 擴展類加載器 64
3.1.3 應用類加載器/系統類加載器 65
3.1.4 構造類加載器實例 65
3.1.5 類的雙親委派機制 68
3.2 預加載類 83
3.2.1 核心類的預加載 83
3.2.2 數組的預加載 87
3.3 Java主類的裝載 88
3.4 觸發類的裝載 94
第4章 類與常量池的解析 97
4.1 類的解析 97
4.1.1 Class文件格式 97
4.1.2 ClassFileParser類簡介 98
4.1.3 ClassFileStream類簡介 99
4.1.4 解析類文件 102
4.1.5 保存解析結果 109
4.2 常量池的解析 116
4.2.1 ConstantPool類 117
4.2.2 創建ConstantPool實例 117
4.2.3 解析常量池項 122
第5章 字段的解析 136
5.1 字段的解析基礎 136
5.1.1 FieldAllocationCount與FieldAllocationType類 136
5.1.2 為字段分配內存空間 139
5.1.3 獲取字段信息 141
5.2 偽共享 145
5.3 字段的內存佈局 148
5.3.1 靜態字段內存塊的偏移量 148
5.3.2 非靜態字段內存塊的偏移量 149
5.3.3 計算每個字段的偏移量 154
5.3.4 @Contended字段的偏移量 156
5.4 字段的註入 158
5.5 對像類型字段的遍歷 165
第6章 方法的解析 174
6.1 Method與ConstMethod類 174
6.1.1 Method類 174
6.1.2 ConstMethod類 177
6.2 調用parse_methods()函數解析方法 178
6.2.1 創建Method與ConstMethod實例 182
6.2.2 保存方法解析信息 187
6.3 klassVtable虛函數表 187
6.3.1 klassVtable類 188
6.3.2 計算vtable的大小 189
6.3.3 vtable的初始化 200
6.4 klassItable虛函數表 209
6.4.1 klassItable類 209
6.4.2 計算itable的大小 211
6.4.3 itable的初始化 213
第7章 類的連接與初始化 220
7.1 類的連接 220
7.2 類的驗證 224
7.3 類的重寫 227
7.3.1 生成常量池緩存項索引 228
7.3.2 重寫字節碼指令 234
7.3.3 創建常量池緩存 238
7.4 方法的連接 244
7.5 類的初始化 246
第8章 運行時數據區 250
8.1 HotSpot VM的內存劃分 250
8.2 元空間 252
8.2.1 元空間的數據結構 253
8.2.2 內存塊的管理 256
8.2.3 內存分配 258
8.2.4 內存回收 262
8.3 堆空間 267
8.3.1 CollectedHeap、Generation與Space類 268
8.3.2 Java堆的回收策略 277
8.3.3 Java堆的初始化 288
第9章 類對象的創建 299
9.1 對象的創建 299
9.2 對象的內存分配 311
9.2.1 在TLAB中分配內存 311
9.2.2 在堆中分配內存 322
9.2.3 添加對象偏移表記錄 335
第10章 垃圾回收 344
10.1 分代垃圾回收 344
10.1.1 Serial和Serial Old垃圾收集器 344
10.1.2 複製算法和“標記-整理”算法 346
10.1.3 卡表 352
10.2 垃圾回收線程 358
10.3 安全點 370
10.3.1 關於安全點 370
10.3.2 阻塞線程和狀態切換線程進入安全點 376
10.3.3 解釋線程進入安全點 379
10.3.4 編譯線程進入安全點 383
10.3.5 執行本地代碼線程進入安全點 385
第11章 Serial垃圾收集器 388
11.1 觸發YGC 388
11.2 年輕代的垃圾回收 389
11.3 標記普通的根對象 403
11.4 標記老年代引用的對象 415
11.5 遞歸標記活躍對象並複制 422
第12章 Serial Old垃圾收集器 428
12.1 觸發FGC 428
12.2 標記活躍對象 431
12.3 計算活躍對象的地址 440
12.4 更新對象的引用地址 451
12.5 移動所有活躍對象 457
12.6 更新偏移表與卡表 460
第13章 Java引用類型 463
13.1 Java引用類型簡介 463
13.2 查找引用類型 469
13.3 軟引用 481
13.4 弱引用 490
13.5 虛引用 492
13.6 最終引用 495
