注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁出版圖書科學(xué)技術(shù)計算機/網(wǎng)絡(luò)軟件與程序設(shè)計JRockit權(quán)威指南:深入理解JVM

JRockit權(quán)威指南:深入理解JVM

JRockit權(quán)威指南:深入理解JVM

定 價:¥99.00

作 者: [瑞士] 馬庫斯·希爾特(Marcus Hirt),[瑞典] 馬庫斯·拉杰格倫(Marcus Lagergren) 著,曹旭東 譯
出版社: 人民郵電出版社
叢編項:
標(biāo) 簽: 暫缺

ISBN: 9787115500458 出版時間: 2019-01-01 包裝: 平裝
開本: 16開 頁數(shù): 320 字?jǐn)?shù):  

內(nèi)容簡介

  本書面向所有以Java編程語言為工作中心的開發(fā)人員和系統(tǒng)管理員,分為3大部分。第一部分著重介紹了JVM和自適應(yīng)運行時的工作原理,并以JRockit為例專門介紹到底什么是好的Java代碼。第二部分介紹JRockit Mission Control套件的具體功能,以及如何使用JRockit Mission Control套件來查找應(yīng)用程序的性能瓶頸。第三部分介紹Java發(fā)展方向。

作者簡介

  馬庫斯·希爾特(Marcus Hirt),JRockit核心開發(fā)者,Appeal Virtual Machines公司聯(lián)合創(chuàng)始人,目前任職于Oracle Java產(chǎn)品組。馬庫斯·拉杰格倫(Marcus Lagergren),JRockit代碼生成器架構(gòu)和項目負(fù)責(zé)人,Appeal Virtual Machines創(chuàng)始成員。2016年Java Champion得主,一直致力于Java語言的開發(fā)和改進。曹旭東,畢業(yè)于哈工大,目前就職于滴滴,從事后端應(yīng)用開發(fā)工作,另有譯作《深入剖析Tomcat》。

圖書目錄

第 1章 起步  1
1.1 獲取JRockit JVM 1
1.2 將應(yīng)用程序遷移到JRockit 2
1.2.1 命令行選項 3
1.2.2 行為差異 3
1.3 JRockit版本號的命名規(guī)則 4
1.4 獲取幫助 5
1.5 小結(jié) 5
第 2章 自適應(yīng)代碼生成 6
2.1 平臺無關(guān)性 6
2.2 Java虛擬機 7
2.2.1 基于棧的虛擬機 8
2.2.2 字節(jié)碼格式 8
2.3 代碼生成策略 10
2.3.1 純解釋執(zhí)行 10
2.3.2 靜態(tài)編譯 11
2.3.3 完全JIT編譯 12
2.3.4 混合模式 12
2.4 自適應(yīng)代碼生成 13
2.4.1 判斷熱方法 14
2.4.2 優(yōu)化動態(tài)程序 14
2.5 深入JIT編譯器 16
2.5.1 處理字節(jié)碼 16
2.5.2 字節(jié)碼“優(yōu)化器” 18
2.5.3 優(yōu)化字節(jié)碼 21
2.6 代碼流水線 22
2.6.1 為什么JRockit沒有字節(jié)碼解釋器 22
2.6.2 啟動 23
2.6.3 運行時代碼生成 24
2.6.4 代碼生成概述 26
2.7 控制代碼生成 38
2.8 小結(jié) 42
第3章 自適應(yīng)內(nèi)存管理 43
3.1 自動內(nèi)存管理 43
3.1.1 自適應(yīng)內(nèi)存管理 44
3.1.2 自動內(nèi)存管理的優(yōu)點 44
3.1.3 自動內(nèi)存管理的缺點 45
3.2 堆管理基礎(chǔ) 45
3.2.1 對象的分配與釋放 45
3.2.2 碎片與整理 45
3.3 垃圾回收算法 47
3.3.1 引用計數(shù) 47
3.3.2 引用跟蹤 47
3.3.3 STW 50
3.3.4 分代垃圾回收 55
3.3.5 吞吐量與延遲 57
3.3.6 JRockit中的垃圾回收 58
3.4 性能與伸縮性 60
3.4.1 線程局部分配 60
3.4.2 更大的堆內(nèi)存 61
3.4.3 緩存友好性 64
3.4.4 NUMA架構(gòu) 65
3.4.5 大內(nèi)存頁 66
3.4.6 自適應(yīng) 67
3.5 近實時垃圾回收 69
3.5.1 軟實時與硬實時 69
3.5.2 JRockit Real Time 69
3.6 內(nèi)存操作相關(guān)的API 72
3.6.1 析構(gòu)方法 72
3.6.2 Java中的引用 73
3.6.3 JVM的行為差異 75
3.7 陷阱與偽優(yōu)化 75
3.8 JRockit中的內(nèi)存管理 76
3.8.1 基本參數(shù) 76
3.8.2 壓縮引用 78
3.8.3 高級選項 78
3.9 小結(jié) 79
第4章 線程與同步 80
4.1 基本概念 80
4.1.1 難以調(diào)試 82
4.1.2 難以優(yōu)化 82
4.2 Java API 84
4.2.1 synchronized關(guān)鍵字 84
4.2.2 java.lang.Thread類 84
4.2.3 java.util.concurrent包 85
4.2.4 信號量 85
4.2.5 volatile關(guān)鍵字 87
4.3 Java中線程與同步機制的實現(xiàn) 88
4.3.1 Java內(nèi)存模型 88
4.3.2 同步的實現(xiàn) 91
4.3.3 同步在字節(jié)碼中的實現(xiàn) 96
4.3.4 線程的實現(xiàn) 99
4.4 對于線程與同步的優(yōu)化 100
4.4.1 鎖膨脹與鎖收縮 100
4.4.2 遞歸鎖 101
4.4.3 鎖融合 101
4.4.4 延遲解鎖 102
4.5 陷阱與偽優(yōu)化 105
4.5.1 Thread.stop、Thread.resume和Thread.suspend 105
4.5.2 雙檢查鎖 106
4.6 相關(guān)命令行參數(shù) 107
4.6.1 檢查鎖與延遲解鎖 107
4.6.2 輸出調(diào)用棧信息 108
4.6.3 鎖分析 110
4.6.4 設(shè)置線程棧的大小 111
4.6.5 使用命令行參數(shù)控制鎖的行為 111
4.7 小結(jié) 111
第5章 基準(zhǔn)測試與性能調(diào)優(yōu) 113
5.1 為何要進行基準(zhǔn)測試 113
5.1.1 制定性能目標(biāo) 114
5.1.2 對性能進行回歸測試 114
5.1.3 確定優(yōu)化方向 115
5.1.4 商業(yè)應(yīng)用 115
5.2 如何構(gòu)建基準(zhǔn)測試 116
5.2.1 置身事外 116
5.2.2 多次測量 118
5.2.3 微基準(zhǔn)測試 118
5.2.4 測試前熱身 121
5.3 確定測試目標(biāo) 122
5.3.1 吞吐量 122
5.3.2 兼顧吞吐量、響應(yīng)時間和延遲 122
5.3.3 伸縮性 122
5.3.4 電力消耗 124
5.3.5 其他問題 124
5.4 工業(yè)級基準(zhǔn)測試 124
5.4.1 SPEC基準(zhǔn)測試套件 124
5.4.2 SipStone基準(zhǔn)測試 128
5.4.3 DaCapo基準(zhǔn)測試 128
5.4.4 真實場景下的應(yīng)用程序 128
5.5 基準(zhǔn)測試的潛在風(fēng)險 128
5.6 性能調(diào)優(yōu) 129
5.6.1 非規(guī)范化行為 129
5.6.2 調(diào)優(yōu)目標(biāo) 130
5.7 常見性能瓶頸與規(guī)避方法 138
5.7.1 命令行參數(shù)-XXaggressive 138
5.7.2 析構(gòu)函數(shù) 139
5.7.3 引用對象過多 139
5.7.4 對象池 139
5.7.5 算法與數(shù)據(jù)結(jié)構(gòu) 140
5.7.6 誤用System.gc() 141
5.7.7 線程數(shù)太多 141
5.7.8 鎖競爭導(dǎo)致性能瓶頸 142
5.7.9 不必要的異常 142
5.7.10 大對象 144
5.7.11 本地內(nèi)存與堆內(nèi)存 144
5.8 wait方法、notify方法與胖鎖 145
5.8.1 堆的大小設(shè)置不當(dāng) 145
5.8.2 存活對象過多 145
5.8.3 Java并非萬能 145
5.9 小結(jié) 146
第6章 JRockit Mission Control套件 147
6.1 背景介紹 147
6.1.1 采樣分析與準(zhǔn)確分析 148
6.1.2 用途廣泛 149
6.2 概述 150
6.2.1 JRockit Mission Control的服務(wù)器端組件 151
6.2.2 JRockit Mission Control的客戶端組件 151
6.2.3 術(shù)語介紹 153
6.2.4 獨立運行JRockit Mission Control 153
6.2.5 在Eclipse中運行JRockit Mission Control 154
6.2.6 遠程管理JRockit 155
6.2.7 安全限制 159
6.2.8 處理連接問題 160
6.3 更新點 162
6.4 調(diào)試JRockit Mission Control 162
6.5 小結(jié) 164
第7章 Management Console 165
7.1 JMX Management Console 165
7.2 Management Console 166
7.2.1 一般信息標(biāo)簽組 166
7.2.2 MBean標(biāo)簽組 171
7.2.3 運行時標(biāo)簽組 174
7.2.4 高級標(biāo)簽組 176
7.2.5 其他標(biāo)簽組 177
7.3 擴展JRockit Mission Control Console 178
7.4 小結(jié) 181
第8章 JRockit Runtime Analyzer 182
8.1 反饋信息的必要性 182
8.2 分析JRA記錄 185
8.2.1 一般信息標(biāo)簽組 185
8.2.2 內(nèi)存標(biāo)簽組 186
8.2.3 代碼標(biāo)簽組 188
8.2.4 線程/鎖標(biāo)簽組 190
8.2.5 延遲標(biāo)簽組 192
8.2.6 使用操作集 195
8.3 故障排除 197
8.4 小結(jié) 198
第9章 JRockit Flight Recorder 199
9.1 JRA進化 199
9.1.1 關(guān)于事件 200
9.1.2 記錄引擎 200
9.1.3 啟動參數(shù) 202
9.2 在JRockit Mission Control中使用JFR 203
9.3 與JRA的區(qū)別 205
9.3.1 范圍選擇器 205
9.3.2 操作集 206
9.3.3 關(guān)聯(lián)鍵 206
9.3.4 延遲分析 206
9.3.5 異常分析 207
9.3.6 內(nèi)存分析 209
9.4 自定義事件 210
9.5 擴展JFR 213
9.6 小結(jié) 215
第 10章 Memory Leak Detector 216
10.1 Java內(nèi)存泄漏 216
10.1.1 靜態(tài)編程語言中的內(nèi)存泄漏 216
10.1.2 自動內(nèi)存管理中的內(nèi)存泄漏 217
10.2 檢測Java中的內(nèi)存泄漏 217
10.3 Memleak簡介 218
10.4 追蹤內(nèi)存泄漏 219
10.5 交互式追蹤內(nèi)存泄漏 224
10.6 通用堆分析器 226
10.7 追蹤內(nèi)存分配 227
10.8 問題排查 227
10.9 小結(jié) 228
第 11章 JRCMD 229
11.1 簡介 229
11.2 覆蓋SIGQUIT信號處理句柄 230
11.3 JRCMD的限制 232
11.4 JRCMD命令參考 232
11.4.1 check_flightrecording(R28) 232
11.4.2 checkjrarecording(R27) 233
11.4.3 command_line 234
11.4.4 dump_flightrecording(R28) 234
11.4.5 heap_diagnostics(R28) 234
11.4.6 hprofdump(R28) 237
11.4.7 kill_management_server 238
11.4.8 list_vmflags(R28) 238
11.4.9 lockprofile_print 239
11.4.10 lockprofile_reset 240
11.4.11 memleakserver 240
11.4.12 oom_diagnostics(R27) 240
11.4.13 print_class_summary 240
11.4.14 print_codegen_list 241
11.4.15 print_memusage(R27) 242
11.4.16 print_memusage(R28) 243
11.4.17 print_object_summary 247
11.4.18 print_properties 249
11.4.19 print_threads 250
11.4.20 print_utf8pool 251
11.4.21 print_vm_state 251
11.4.22 run_optfile(R27) 252
11.4.23 run_optfile(R28) 252
11.4.24 runfinalization 253
11.4.25 runsystemgc 253
11.4.26 set_vmflag(R28) 253
11.4.27 start_flightrecording(R28) 253
11.4.28 start_management_server 254
11.4.29 startjrarecording(R27) 255
11.4.30 stop_flightrecording(R28) 256
11.4.31 timestamp 256
11.4.32 verbosity 256
11.4.33 version 257
11.5 小結(jié) 258
第 12章 JRockit Management API 259
12.1 JMAPI 259
12.2 JMXMAPI 263
12.2.1 JRockit內(nèi)部性能計數(shù)器 264
12.2.2 使用JMXMAPI構(gòu)建可遠程操作的JRCMD 266
12.3 小結(jié) 270
第 13章 JRockit Virtual Edition 271
13.1 虛擬化簡介 272
13.1.1 全虛擬化 272
13.1.2 半虛擬化 273
13.1.3 其他虛擬化術(shù)語 273
13.1.4 虛擬機管理程序 273
13.1.5 虛擬化的優(yōu)勢 275
13.1.6 虛擬化的劣勢 275
13.2 Java虛擬化 276
13.2.1 JRockit Virtual Edition 277
13.2.2 虛擬機鏡像與管理框架 279
13.2.3 JRockit VE的優(yōu)勢 284
13.2.4 JRockit VE的限制 287
13.3 虛擬化能媲美真實環(huán)境嗎 287
13.3.1 高質(zhì)量的熱點代碼采樣 288
13.3.2 自適應(yīng)堆大小 288
13.3.3 線程間的頁保護 289
13.4 小結(jié) 291
附錄A 參考文獻 292
附錄B 術(shù)語表 296

本目錄推薦

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