深入淺出:Java虛擬機設計與實現

華保健著

  • 出版商: 機械工業
  • 出版日期: 2020-04-01
  • 定價: $594
  • 售價: 7.5$446
  • 語言: 簡體中文
  • 頁數: 388
  • 裝訂: 平裝
  • ISBN: 7111645243
  • ISBN-13: 9787111645245
  • 相關分類: Java 程式語言Compiler
  • 立即出貨 (庫存 < 4)

買這商品的人也買了...

商品描述

《深入淺出:Java虛擬機設計與實現》由國內編譯器和虛擬機方面的研究者執筆,
詳細介紹了Java虛擬機設計與實現的各個方面,並給出了相關算法的實現。
全書圍繞虛擬機架構,討論了虛擬機中的所有重要組件,包括類加載器、
執行引擎、本地方法接口、異常處理、堆和垃圾收集、多線程及調試。

《深入淺出:Java虛擬機設計與實現》不僅關注對技術本身的介紹,
還重點強調了這些技術所涉及的知識對讀者進一步掌握工具和提高軟件設計水平的重要作用,
並給出了豐富的示例和*佳實踐。

《深入淺出:Java虛擬機設計與實現》適合Java程序員、對編譯器和虛擬機底層技術感興趣的工程人員,
以及高等院校計算機相關專業的學生閱讀。

目錄大綱

前言
第1章虛擬機架構/1
1.1 Java與Java虛擬機/1
1.1.1設計背景/1
1.1.2 Java技術棧的組成要素/2
1.1.3 Java字節碼/3
1.2 Java虛擬機架構/ 5
1.3實例:J語言及其編譯/7
1.3.1 J語言語法/7
1.3.2棧式計算機/13
1.3.3 J字節碼/17
1.3.4 J語言編譯到J字節碼/19
1.4實例:J虛擬機/23
1.4.1字節碼加載子系統/23
1.4.2字節碼驗證器/24
1.4.3解釋執行引擎/27

第2章類加載器/30
2.1實例:Java的類加載/30
2.2類的二進制定義/32
2.2.1常量池/34
2.2.2接口/36
2.2.3字段/37
2.2.4方法/37
2.2.5屬性/38
2.3方法區/41
2.3.1代碼區/41
2.3.2運行時常量池/45
2.3.3類輔助數據結構/47
2.4類裝載/49
2.4.1遞歸下降裝載/50
2.4.2接口的裝載/57
2.4.3數組的裝載/57
2.4.4基本類的裝載/59
2.5驗證/61
2.5.1為什麼要進行驗證/ 61
2.5.2驗證的目標/63
2.5.3實例:驗證規則/63
2.5.4結構化約束/68
2.5.5類型推導/69
2.6準備/75
2.6.1靜態字段的準備/76
2.6.2非靜態字段的準備/77
2.6.3虛方法表/80
2.7解析/86
2.7.1實例:類的解析/86
2.7.2類的解析/88
2.7.3字段的解析/89
2.7.4方法的解析/91
2.7.5接口方法的解析/98
2.7.6字符串常量的解析/100
2.7.7常量池其他表項的解析/101
2.8初始化/101
2.8.1類初始化方法/102
2.8.2類初始化算法/103
2.9類加載各階段的執行順序/110
2.9.1急切策略和惰性策略/111
2.9.2類解析和類初始化的耦合性/113
2.10自定義類加載器/114
2.10.1獨立加載模型/116
2.10.2雙親委派模型/118
2.11實例:類加載器的典型應用/123
2.11. 1動態代理/124
2.11.2熱替換/133

第3章執行引擎/139
3.1棧幀結構/139
3.2調用規範/140
3.3執行引擎架構/141
3.3.1序列式架構/142
3.3.2跳轉表架構/143
3.4執行引擎實現/145
3.4.1常量加載指令/145
3.4.2數據加載指令/147
3.4.3數據存儲指令/149
3.4.4棧操作指令/151
3.4.5數學運算指令/152
3.4 .6數值轉換指令/155
3.4.7比較運算指令/157
3.4.8控制轉移指令/159
3.4.9引用指令/176
3.4.10擴展與虛擬機保留指令/185
3.5本地方法執行引擎/187
3.6可重入方法/194
3.7彙編模板/198

第4章本地方法接口/201
4.1實例:Java本地方法/201
4.2方法綁定/202
4.2.1本地方法的數據結構/203
4.2.2動態庫加載/205
4.2.3動態綁定/206
4.2. 4靜態綁定/209
4.3本地方法攔截/213
4.3.1攔截機制/213
4.3.2耦合性/216
4.3.3反射/217
4.4本地方法回調Java方法/218
4.4.1 JNI回調函數/220
4.4. 2本地方法棧幀/223

第5章異常處理/226
5.1實例:Java異常處理/226
5.2異常棧/228
5.3異常表/236
5.4棧回滾/243
5.5本地方法異常/247
5.6其他問題/250
5.6 .1隱式異常/250
5.6.2異常處理與多線程/253
5.6.3執行效率/254

第6章堆和垃圾收集/255
6.1實例:對象與垃圾/255
6.1.1語法垃圾與語義垃圾/ 256
6.1.2內存洩漏/257
6.2堆/258
6.2.1堆數據結構/258
6.2.2堆分配接口/259
6.3存儲佈局/259
6.3.1對象的存儲佈局/259
6.3.2類的存儲佈局/263
6.3.3數組的存儲佈局/264
6.4垃圾收集/265
6.4.1根節點/266
6.4.2複製收集/270
6.4.3終結/276
6.4.4垃圾收集的觸發/280
6.5本地方法和垃圾收集/ 281
6.5.1局部和全局引用/281
6.5.2對象引用相關JNI函數的實現/283
6.6其他問題/285
6.6.1多線程與垃圾收集/285
6.6.2無中斷垃圾收集/289
6.6.3類型標記/291

第7章多線程/293
7.1線程語義模型/293
7.1.1線程方法/293
7.1.2線程狀態/294
7.1.3實例:線程中斷/297
7.2管程/303
7.2.1管程數據結構/303
7.2.2接口與實現/307
7.2.3管程指令/314
7.2.4管程與對象/316
7.3多線程的實現/318
7.3.1線程數據結構/319
7.3.2創建線程對象/321
7.3. 3啟動/323
7.3.4讓出/325
7.3.5睡眠/325
7.3.6中斷/327
7.3.7停止、掛起和繼續/335
7.3.8原子性和可見性/337
7.3.9線程與信號/338
7.4多線程與虛擬機其他子系統的交互/342
7.4.1全局數據結構與鎖/343
7.4.2類初始化/345
7.4.3垃圾收集/350

第8章調試/357
8.1調試器架構/ 357
8.1.1客戶端{服務器架構/358
8.1.2 JDWP調試協議/359
8.1.3數據類型/360
8.1.4實例:斷點/361
8.2調試代理/364
8.2.1通信模塊/365
8.2.2執行引擎模塊/366
8.2.3對像管理模塊/370
8.2.4事件處理模塊/371
8.3實例:jdb調試器/376
8.4調試的其他問題/384
8.4.1薛定諤困境/384