HotSpot實戰

HotSpot實戰 下載 mobi epub pdf 電子書 2024


簡體網頁||繁體網頁
陳濤 著

下載链接在页面底部


點擊這裡下載
    

想要找書就要到 新城書站
立刻按 ctrl+D收藏本頁
你會得到大驚喜!!

發表於2024-11-23


圖書介紹


齣版社: 人民郵電齣版社
ISBN:9787115343635
版次:1
商品編碼:11414422
品牌:異步圖書
包裝:平裝
開本:16開
齣版時間:2014-03-01
用紙:膠版紙
頁數:347
正文語種:中文


類似圖書 點擊查看全場最低價

相關圖書





圖書描述

編輯推薦

  

  “蚓無爪牙之利,筋骨之強,上食埃土,下飲黃泉,用心一也。蟹六跪而二螯,非蛇蟮之穴無可寄托者,用心躁也”。對於技術人員來說,如果長期忽略自身技術的根基而去一昧地追求高層框架技術,這無疑是捨本求末的做法。
  相較於C或C++程序員,我發現Java程序員更容易忽視基礎技術。JVM的齣現,為程序員屏蔽瞭操作係統與硬件的細節,使得程序員從諸如內存管理這樣的繁瑣任務中解放齣來。但這不並等同於允許Java程序員放棄對基礎的重視。我們是否有過這樣的經曆,在遇到內存故障、丟包、網絡協議設計、資源瓶頸、證書、二進製等問題時,往往會覺得比較棘手,在尋求解決思路時更是顯得力不從心。這實質上是自身技術遇到瞭瓶頸難以突破所緻。可怕的是,想去深究的時候卻無從下手。
  我寫這本書的初衷是為瞭喚起Java程序員對於基礎技術的重視。事實上,任何平颱的程序員都應當瞭解平颱的基本特性、實現機製以及接口,這是提高自身修養的必經之路。對於Java程序員來說,我們需要瞭解的平颱就是JVM。瞭解JVM的基本實現機製,不僅對於解決實際應用中諸如GC等虛擬機問題時有直接幫助,還有利於我們更好地理解語言本身。
  所幸的是,Oracle官方已經將虛擬機項目的源碼開放齣來,這對於我們來說簡直就是福音。本書將以OpenJDK和HotSpot為素材,深入淺齣地講解我們熟悉的一款虛擬機産品的實現。除瞭Java程序員,從事與Java或JVM相關的開發、測試、運維等技術人員也將在《HotSpot實戰》中獲益。

內容簡介

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

作者簡介

陳濤,碩士,畢業於中國科技大學。現就職於網易公司旗下的網易寶,從事在綫支付係統的設計與開發工作。在從事Java工作之前 ,曾有過Linux內核及驅動開發工作經驗。熱衷於專研技術,對編程語言和JVM比較感興趣。工作之餘 ,喜歡足球和武俠帶來的樂趣。目前正在“專研”的課題是如何做一名稱職的奶爸。

內頁插圖

精彩書評

  

  陳濤是網易寶的核心開發人員之一,同時維護瞭網易寶的多個係統。網易寶是網易官方的在綫支付係統,對開發工程師的技術要求極高。他喜歡專研技術,知識麵寬,不僅對Java、C、C++熟悉,對操作係統底層也很熟悉,能夠將理論很好地應用於實踐中。本書便是他潛心研究和實踐的成果。
  ——趙剛,網易寶係統負責人,資深技術專傢


  陳濤在Java開發領域知識的深度和廣度給我留下瞭深刻的印象。本書深入淺齣地介紹瞭JVM技術,強調實踐應用。對於想深入研究JVM並希望快速取得進展的開發人員來說,本書非常具有實用價值,是Java開發水平更上一層樓的階石。
  ——陳雙輝,現任通策集團信息事業部CTO,曾在摩托羅拉移動擔任Senior PM。

目錄

第1章 初識HotSpot 1
1.1 JDK概述 2
1.1.1 JCP與JSR 3
1.1.2 JDK的發展曆程 4
1.1.3 Java 7的語法變化 7
1.2 動手編譯虛擬機 13
1.2.1 源代碼下載 13
1.2.2 HotSpot源代碼結構 13
1.2.3 搭建編譯環境 15
1.2.4 編譯目標 16
1.2.5 編譯過程 17
1.2.6 編譯常見問題 19
1.3 實戰:在HotSpot內調試HelloWorld 20
1.3.1 認識GDB 21
1.3.2 準備調試腳本 22
1.4 小結 26

第2章 啓動 28
2.1 HotSpot內核 28
2.1.1 如何閱讀源代碼 28
2.1.2 HotSpot內核框架 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函數 50
2.2.4 主綫程 51
2.2.5 InitializeJVM函數 53
2.2.6 JNI_CreateJavaVM函數 55
2.2.7 調用Java主方法 56
2.2.8 JVM退齣路徑 56
2.3 係統初始化 57
2.3.1 配置OS模塊 58
2.3.2 配置係統屬性 60
2.3.3 加載係統庫 61
2.3.4 啓動綫程 62
2.3.5 vm_init_globals函數:初始化全局數據結構 65
2.3.6 init_globals函數:初始化全局模塊 65
2.4 小結 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 實戰:用HSDB調試HotSpot 82
3.2 類的狀態轉換 87
3.2.1 入口:Class文件 87
3.2.2 類的狀態 92
3.2.3 加載 96
3.2.4 鏈接 101
3.2.5 初始化 104
3.2.6 實戰:類的“族譜” 107
3.2.7 實戰:係統字典 111
3.3 創建對象 113
3.3.1 實例對象的創建流程 114
3.3.2 實戰:探測JVM內部對象 116
3.4 小結 119

第4章 運行時數據區 120
4.1 堆 121
4.1.1 Java的自動內存管理 121
4.1.2 堆的管理 122
4.2 綫程私有區域 125
4.2.1 PC 125
4.2.2 JVM棧 126
4.3 方法區 126
4.3.1 紐帶作用 127
4.3.2 常量池 130
4.3.3 常量池緩存:ConstantPoolCache 133
4.3.4 方法的錶示:methodOop 134
4.3.5 方法的解析:將符號引用轉換成直接引用 138
4.3.6 代碼放在哪裏:ConstMethodOop 141
4.3.7 實戰:探測運行時常量池 142
4.4 性能監控數據區:Perf Data 147
4.4.1 描述這段空間:PerfMemory 147
4.4.2 查看 148
4.4.3 生産 150
4.5 轉儲 151
4.5.1 用VisualVM進行轉儲分析 151
4.5.2 JVM Crash 153
4.6 小結 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 實戰:性能分析方法 184
5.3.1 獲取GC日誌 184
5.3.2 GC監控信息 187
5.3.3 內存分析工具 189
5.3.4 選擇閤適的收集器與GC性能評估 190
5.3.5 不要忽略JVM Crash日誌 195
5.4 小結 196

第6章 棧 197
6.1 硬件背景:瞭解真實機器 198
6.1.1 程序是如何運行的 198
6.1.2 x86與棧幀 199
6.1.3 ARM對Java硬件級加速:Jazelle技術 202
6.2 Java棧 203
6.2.1 寄存器式指令集與棧式指令集 203
6.2.2 HotSpot中的棧 204
6.2.3 棧幀 207
6.2.4 充分利用寄存器資源 210
6.2.5 虛擬機如何調用Java函數 212
6.2.6 優化:棧頂緩存 221
6.2.7 實戰:操作數棧 223
6.3 小結 228

第7章 解釋器和即時編譯器 229
7.1 概述 230
7.2 解釋器如何工作 231
7.2.1 Interpreter模塊 232
7.2.2 Code模塊 234
7.2.3 字節碼錶 235
7.2.4 Code Cache 236
7.2.5 InterpreterCodelet與Stub隊列 239
7.2.6 Code生成器 241
7.2.7 模闆錶與轉發錶 244
7.2.8 實戰:InterpreterCodelet 247
7.3 即時編譯器 250
7.3.1 概述 250
7.3.2 編譯器模塊 251
7.3.3 編譯器的基本結構 252
7.3.4 實戰:編譯原理實踐,瞭解編譯中間環節 255
7.4 小結 267

第8章 指令集 268
8.1 再說棧式指令集 268
8.2 數據傳送 270
8.2.1 局部變量、常量池和操作數棧之間的數據傳送 270
8.2.2 數據傳送指令 272
8.2.3 實戰:數組的越界檢查 277
8.3 類型轉換 279
8.4 對象的創建和操作 281
8.5 程序流程控製 282
8.5.1 控製轉移指令 282
8.5.2 條件轉移 283
8.5.3 無條件轉移 284
8.5.4 復閤條件轉移 285
8.5.5 實戰:switch語句如何使用String 287
8.6 運算 290
8.6.1 加法:iadd 290
8.6.2 取負:ineg 291
8.7 函數的調用和返迴 292
8.7.1 Java函數分發機製:VTABLE與ITABLE 293
8.7.2 invoke係列指令 297
8.7.3 動態分發:覆蓋 299
8.7.4 靜態分發:重載 302
8.8 異常 305
8.8.1 異常錶 305
8.8.2 創建異常 306
8.8.3 try-catch 309
8.8.4 finally 311
8.9 小結 312

第9章 虛擬機監控工具 313
9.1 Attach機製 314
9.1.1 AttachProvider與VirtualMachine 314
9.1.2 命令的下發:execute() 317
9.1.3 命令的執行:Attach Listener守護綫程 319
9.2 查看JVM進程 320
9.2.1 用jps查看Java進程 320
9.2.2 實戰:定製jps,允許查看庫路徑 323
9.3 查看和配置JVM 326
9.3.1 用jinfo查看JVM參數配置 326
9.3.2 實戰:擴展flags選項,允許查看命令行參數 330
9.4 堆內存轉儲工具 332
9.4.1 Heap Dump 332
9.4.2 原理 333
9.5 堆轉儲分析 337
9.5.1 Heap Dump分析工具:jhat 337
9.5.2 實戰:MAT分析過程 340
9.6 綫程轉儲分析 343
9.6.1 jstack 343
9.6.2 實戰:如何分析資源等待 344
9.7 小結 347






精彩書摘

3.3.1 實例對象的創建流程
實例的創建過程,首先根據從類常量池中獲取對象類型信息並驗證類是否已被解析過,若確保該類已被加載和正確解析,使用快速分配(fast allocation)技術為該類分配對象空問;若該類尚未解析過,則隻能通過慢速分配(slow allocation)方式分配實例對象。實例的創建流程如圖3—30所示。
對象的創建基本流程如下所示。
(1)驗證類已被解析。
(2)獲取instanceKlass,確保klass已完全初始化。
(3)若滿足快速分配條件,則進入快速分配流程。
(4)若不滿足快速分配條件,或者快速分配失敗,則進入慢速分配流程。
接下來,我們來看一下快速分配與慢速分配的區彆和使用場景。
1.快速分配
如果在實例分配之前已經完成瞭類型的解析,那麼分配操作僅僅是在內存空間中劃分可用內存,因此能以較高效效率實現內存分配,故稱為快速分配。
根據分配空間是來自於綫程私有區域還是共享的堆空間,快速分配又可以分為兩種空間選擇策略。
HotSpot通過綫程局部分配緩存技術(即Thread.Local Allocation Buffers,簡稱TLABs)可以在綫程私有區域實現空間的分配。
注意可以通過VM選項UseTLAB來開啓或關閉TLAB功能。
根據是否使用TLAB,快速分配方式有兩種選擇策略。
選擇TLAB:首先嘗試在TLAB中分配,因為TLAB是綫程私有區域,故不需要加鎖便能夠保證綫程安全。在分配一個新的對象空間時,將首先嘗試在TLAB空間中分配對象空間,若分配空間的請求失敗,則再嘗試使用加鎖機製在Eden區分配對象。
選擇Eden空間:若失敗,則嘗試在共享的Eden區進行分配,Eden區是所有綫程共享區域,需要保證綫程安全,故采用原子操作進行分配。若分配失敗,則再次嘗試該操作,直到分配成功為止。

前言/序言


HotSpot實戰 下載 mobi epub pdf txt 電子書 格式

HotSpot實戰 mobi 下載 pdf 下載 pub 下載 txt 電子書 下載 2024

HotSpot實戰 下載 mobi pdf epub txt 電子書 格式 2024

HotSpot實戰 下載 mobi epub pdf 電子書
想要找書就要到 新城書站
立刻按 ctrl+D收藏本頁
你會得到大驚喜!!

用戶評價

評分

不錯不錯不錯

評分

還在學習中,一起共勉

評分

內容先不說,這印刷很差勁

評分

京東618圖書優惠力度很大,又囤瞭不少的書。會一直在京東上買圖書,送貨速度快。

評分

這本書不錯,看著理解底層非常好

評分

很好 很好 很好 很好 很好

評分

物流沒問題,就是這書嚴重不爽,書是好書,但賣的就不一定是好人瞭。

評分

好書三件套,最近啃書中

評分

做Java的開發者的終極目標應該就是瞭解Java虛擬機瞭,這個寫得應該不錯

類似圖書 點擊查看全場最低價

HotSpot實戰 mobi epub pdf txt 電子書 格式下載 2024


分享鏈接




相關圖書


本站所有內容均為互聯網搜索引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度google,bing,sogou

友情鏈接

© 2024 book.cndgn.com All Rights Reserved. 新城書站 版权所有