幫助中心 | 我的帳號 | 關於我們

深入剖析Java虛擬機(源碼剖析與實例詳解基礎卷)

  • 作者:馬智|責編:劉立卿
  • 出版社:機械工業
  • ISBN:9787111689898
  • 出版日期:2021/09/01
  • 裝幀:平裝
  • 頁數:501
人民幣:RMB 149 元      售價:
放入購物車
加入收藏夾

內容大鋼
    本書以流行的工業級Java虛擬機HotSpot為基礎,詳細剖析其基礎功能模塊的源碼,力求講清楚每個重要技術的原理和實現細節,同時結合大量實例和圖示幫助讀者更好地理解所講內容。本書沒有介紹Java運行時的棧結構,以及解釋執行與編譯執行等知識點,這些內容在本書的姊妹篇《深入剖析Java虛擬機:源碼剖析與實例詳解(運行時卷)》一書中進行詳細的介紹。
    本書共13章,章節順序基本上是按照類的生命周期進行編排的。本書涵蓋的主要內容有HotSpot VM簡介、對象的二分模型、類的載入機制、類與常量池的解析、欄位的解析、方法的解析、類的連接與初始化、運行時數據區、類對象的創建和初始化、Serial垃圾收集器、Serial Old垃圾收集器以及Java引用類型的實現原理等。
    本書主要面向想要深入學習和研究Java語言運行原理的人,尤其是正在從事或將來想要從事虛擬機開發的編程人員。另外,本書還非常適合Java求職人員閱讀,可以幫助他們系統掌握虛擬機的相關知識,從而游刃有餘地應對相關公司招聘時的考查。

作者介紹
馬智|責編:劉立卿
    馬智,有多年的Java開發經驗,先後在掌游天下和京東集團任軟體研發工程師。對編程語言的底層實現有濃厚的興趣,深入研究過OpenJDK的源碼實現。著有《深入解析Java編譯器:源碼剖析與實例詳解》一書,頗受讀者好評。

目錄
前言
第1章  認識HotSpot VM
  1.1  初識JVM
  1.2  編譯OpenJDK 8
    1.2.1  準備編譯環境
    1.2.2  下載源代碼
    1.2.3  編譯源代碼
    1.2.4  通過GDB調試源代碼
    1.2.5  通過Eclipse調試源代碼
  1.3  HotSpot VM源代碼結構
  1.4  啟動HotSpot VM
第2章  二分模型
  2.1  Java類的表示——Klass
    2.1.1  Klass類
    2.1.2  InstanceKlass類
    2.1.3  InstanceKlass類的子類
    2.1.4  ArrayKlass類
    2.1.5  TypeArrayKlass類
    2.1.6  ObjArrayKlass類
  2.2  Java對象的表示——oop
    2.2.1  oopDesc類
    2.2.2  markOopDesc類
    2.2.3  instanceOopDesc類
    2.2.4  arrayOopDesc類
    2.2.5  arrayOopDesc類的子類
  2.3  操作句柄——Handle
    2.3.1  句柄Handle的定義與創建
    2.3.2  句柄Handle的釋放
第3章  類的載入
  3.1  類載入器
    3.1.1  引導類載入器/啟動類載入器
    3.1.2  擴展類載入器
    3.1.3  應用類載入器/系統類載入器
    3.1.4  構造類載入器實例
    3.1.5  類的雙親委派機制
  3.2  預載入類
    3.2.1  核心類的預載入
    3.2.2  數組的預載入
  3.3  Java主類的裝載
  3.4  觸發類的裝載
第4章  類與常量池的解析
  4.1  類的解析
    4.1.1  Class文件格式
    4.1.2  ClassFileParser類簡介
    4.1.3  ClassFileStream類簡介
    4.1.4  解析類文件
    4.1.5  保存解析結果
  4.2  常量池的解析
    4.2.1  ConstantPool類
    4.2.2  創建ConstantPool實例

    4.2.3  解析常量池項
第5章  欄位的解析
  5.1  欄位的解析基礎
    5.1.1  FieldAllocationCount與FieldAllocationType類
    5.1.2  為欄位分配內存空間
    5.1.3  獲取欄位信息
  5.2  偽共享
  5.3  欄位的內存布局
    5.3.1  靜態欄位內存塊的偏移量
    5.3.2  非靜態欄位內存塊的偏移量
    5.3.3  計算每個欄位的偏移量
    5.3.4  @Contended欄位的偏移量
  5.4  欄位的注入
  5.5  對象類型欄位的遍歷
第6章  方法的解析
  6.1  Method與ConstMethod類
    6.1.1  Method類
    6.1.2  ConstMethod 類
  6.2  調用parse_methods()函數解析方法
    6.2.1  創建Method與ConstMethod實例
    6.2.2  保存方法解析信息
  6.3  klassVtable虛函數表
    6.3.1  klassVtable類
    6.3.2  計算vtable的大小
    6.3.3  vtable的初始化
  6.4  klassltable虛函數表
    6.4.1  klassltable類
    6.4.2  計算itable的大小
    6.4.3  itable的初始化
第7章  類的連接與初始化
  7.1  類的連接
  7.2  類的驗證
  7.3  類的重寫
    7.3.1  生成常量池緩存項索引
    7.3.2  重寫位元組碼指令
    7.3.3  創建常量池緩存
  7.4  方法的連接
  7.5  類的初始化
第8章  運行時數據區
  8.1  HotSpot VM的內存劃分
  8.2  元空間
    8.2.1  元空間的數據結構
    8.2.2  內存塊的管理
    8.2.3  內存分配
    8.2.4  內存回收
  8.3  堆空間
    8.3.1  CollectedHeap、Generation與Space類
    8.3.2  Java堆的回收策略
    8.3.3  Java堆的初始化
第9章  類對象的創建

  9.1  對象的創建
  9.2  對象的內存分配
    9.2.1  在TLAB中分配內存
    9.2.2  在堆中分配內存
    9.2.3  添加對象偏移表記錄
第10章  垃圾回收
  10.1  分代垃圾回收
    10.1.1  Serial和Serial Old垃圾收集器
    10.1.2  複製演算法和「標記-整理」演算法
    10.1.3  卡表
  10.2  垃圾回收線程
  10.3  安全點
    10.3.1  關於安全點
    10.3.2  阻塞線程和狀態切換線程進入安全點
    10.3.3  解釋線程進入安全點
    10.3.4  編譯線程進入安全點
    10.3.5  執行本地代碼線程進入安全點
第11章  Serial垃圾收集器
  11.1  觸發YGC
  11.2  年輕代的垃圾回收
  11.3  標記普通的根對象
  11.4  標記老年代引用的對象
  11.5  遞歸標記活躍對象並複製
第12章  Serial Old垃圾收集器
  12.1  觸發FGC
  12.2  標記活躍對象
  12.3  計算活躍對象的地址
  12.4  更新對象的引用地址
  12.5  移動所有活躍對象
  12.6  更新偏移表與卡表
第13章  Java引用類型
  13.1  Java引用類型簡介
  13.2  查找引用類型
  13.3  軟引用
  13.4  弱引用
  13.5  虛引用
  13.6  最終引用

  • 商品搜索:
  • | 高級搜索
首頁新手上路客服中心關於我們聯絡我們Top↑
Copyrightc 1999~2008 美商天龍國際圖書股份有限公司 臺灣分公司. All rights reserved.
營業地址:臺北市中正區重慶南路一段103號1F 105號1F-2F
讀者服務部電話:02-2381-2033 02-2381-1863 時間:週一-週五 10:00-17:00
 服務信箱:bookuu@69book.com 客戶、意見信箱:cs@69book.com
ICP證:浙B2-20060032