会员   密码 您忘记密码了吗?
1,653,846 本书已上架      购物流程 | 常见问题 | 联系我们 | 关于我们 | 用户协议

有店 App


当前分类

商品分类

浏览历史

当前位置: 首页 > 简体书 > JRockit權威指南 深入理解JVM
JRockit權威指南 深入理解JVM
上一张
下一张
prev next

JRockit權威指南 深入理解JVM

作者: (瑞士)馬庫斯·希爾特,(瑞典)馬庫斯·拉傑格倫
出版社: 人民郵電出版社
出版日期: 2018-11-01
商品库存: 点击查询库存
以上库存为海外库存属流动性。
可选择“空运”或“海运”配送,空运费每件商品是RM14。
配送时间:空运约8~12个工作天,海运约30个工作天。
(以上预计配送时间不包括出版社库存不足需调货及尚未出版的新品)
定价:   NT594.00
市场价格: RM106.79
本店售价: RM95.04
购买数量:
collect Add to cart Add booking
详细介绍 商品属性 商品标记
內容簡介

本書面向所有以Java程式設計語言為工作中心的開發人員和系統管理員,分為3大部分。第一部分著重介紹了JVM和自我調整運行時的工作原理,並以JRockit為例專門介紹到底什麼是好的Java代碼。第二部分介紹JRockit Mission Control套件的具體功能,以及如何使用JRockit Mission Control套件來查找應用程式的性能瓶頸。第三部分介紹Java發展方向。


作者介紹

馬庫斯·拉傑葛籣(Marcus Lagergren),JRockit代碼生成器架構和專案負責人,Appeal Virtual Machines創始成員。2016年Java Champion得主,一直致力於Java語言的開發和改進。


目錄

第1章 起步  1
1.1 獲取JRockit JVM 1
1.2 將應用程式遷移到JRockit 2
1.2.1 命令列選項 3
1.2.2 行為差異 3
1.3 JRockit版本號的命名規則 4
1.4 獲取幫助 5
1.5 小結 5

第2章 自我調整代碼生成 6
2.1 平臺無關性 6
2.2 Java虛擬機器 7
2.2.1 基於棧的虛擬機器 8
2.2.2 位元組碼格式 8
2.3 代碼生成策略 10
2.3.1 純解釋執行 10
2.3.2 靜態編譯 11
2.3.3 完全JIT編譯 12
2.3.4 混合模式 12
2.4 自我調整代碼生成 13
2.4.1 判斷熱方法 14
2.4.2 優化動態程式 14
2.5 深入JIT編譯器 16
2.5.1 處理位元組碼 16
2.5.2 位元組碼“優化器” 18
2.5.3 優化位元組碼 21
2.6 代碼流水線 22
2.6.1 為什麼JRockit沒有位元組碼解譯器 22
2.6.2 啟動 23
2.6.3 運行時代碼生成 24
2.6.4 代碼生成概述 26
2.7 控制代碼生成 38
2.8 小結 42

第3章 自我調整記憶體管理 43
3.1 自動記憶體管理 43
3.1.1 自我調整記憶體管理 44
3.1.2 自動記憶體管理的優點 44
3.1.3 自動記憶體管理的缺點 45
3.2 堆管理基礎 45
3.2.1 對象的分配與釋放 45
3.2.2 碎片與整理 45
3.3 垃圾回收演算法 47
3.3.1 引用計數 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 更大的堆記憶體 61
3.4.3 緩存友好性 64
3.4.4 NUMA架構 65
3.4.5 大記憶體頁 66
3.4.6 自我調整 67
3.5 近即時垃圾回收 69
3.5.1 軟即時與硬實時 69
3.5.2 JRockit Real Time 69
3.6 記憶體操作相關的API 72
3.6.1 析構方法 72
3.6.2 Java中的引用 73
3.6.3 JVM的行為差異 75
3.7 陷阱與偽優化 75
3.8 JRockit中的記憶體管理 76
3.8.1 基本參數 76
3.8.2 壓縮引用 78
3.8.3 高級選項 78
3.9 小結 79

第4章 執行緒與同步 80
4.1 基本概念 80
4.1.1 難以調試 82
4.1.2 難以優化 82
4.2 Java API 84
4.2.1 synchronized關鍵字 84
4.2.2 java.lang.Thread類 84
4.2.3 java.util.concurrent包 85
4.2.4 信號量 85
4.2.5 volatile關鍵字 87
4.3 Java中執行緒與同步機制的實現 88
4.3.1 Java記憶體模型 88
4.3.2 同步的實現 91
4.3.3 同步在位元組碼中的實現 96
4.3.4 執行緒的實現 99
4.4 對於執行緒與同步的優化 100
4.4.1 鎖膨脹與鎖收縮 100
4.4.2 遞迴鎖 101
4.4.3 鎖融合 101
4.4.4 延遲解鎖 102
4.5 陷阱與偽優化 105
4.5.1 Thread.stop、Thread.resume和Thread.suspend 105
4.5.2 雙檢查鎖 106
4.6 相關命令列參數 107
4.6.1 檢查鎖與延遲解鎖 107
4.6.2 輸出調用棧資訊 108
4.6.3 鎖分析 110
4.6.4 設置執行緒棧的大小 111
4.6.5 使用命令列參數控制鎖的行為 111
4.7 小結 111

第5章 基準測試與性能調優 113
5.1 為何要進行基準測試 113
5.1.1 制定性能目標 114
5.1.2 對性能進行回歸測試 114
5.1.3 確定優化方向 115
5.1.4 商業應用 115
5.2 如何構建基準測試 116
5.2.1 置身事外 116
5.2.2 多次測量 118
5.2.3 微基準測試 118
5.2.4 測試前熱身 121
5.3 確定測試目標 122
5.3.1 輸送量 122
5.3.2 兼顧輸送量、回應時間和延遲 122
5.3.3 伸縮性 122
5.3.4 電力消耗 124
5.3.5 其他問題 124
5.4 工業級基準測試 124
5.4.1 SPEC基準測試套件 124
5.4.2 SipStone基準測試 128
5.4.3 DaCapo基準測試 128
5.4.4 真實場景下的應用程式 128
5.5 基準測試的潛在風險 128
5.6 性能調優 129
5.6.1 非規範化行為 129
5.6.2 調優目標 130
5.7 常見性能瓶頸與規避方法 138
5.7.1 命令列參數-XXaggressive 138
5.7.2 析構函數 139
5.7.3 引用物件過多 139
5.7.4 物件集區 139
5.7.5 演算法與資料結構 140
5.7.6 誤用System.gc() 141
5.7.7 執行緒數太多 141
5.7.8 鎖競爭導致性能瓶頸 142
5.7.9 不必要的異常 142
5.7.10 大對象 144
5.7.11 本地記憶體與堆記憶體 144
5.8 wait方法、notify方法與胖鎖 145
5.8.1 堆的大小設置不當 145
5.8.2 存活物件過多 145
5.8.3 Java並非萬能 145
5.9 小結 146

第6章 JRockit Mission Control套件 147
6.1 背景介紹 147
6.1.1 採樣分析與準確分析 148
6.1.2 用途廣泛 149
6.2 概述 150
6.2.1 JRockit Mission Control的伺服器端組件 151
6.2.2 JRockit Mission Control的用戶端組件 151
6.2.3 術語介紹 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 調試JRockit Mission Control 162
6.5 小結 164

第7章 Management Console 165
7.1 JMX Management Console 165
7.2 Management Console 166
7.2.1 一般資訊標籤組 166
7.2.2 MBean標籤組 171
7.2.3 運行時標籤組 174
7.2.4 高級標籤組 176
7.2.5 其他標籤組 177
7.3 擴展JRockit Mission Control Console 178
7.4 小結 181

第8章 JRockit Runtime Analyzer 182
8.1 回饋資訊的必要性 182
8.2 分析JRA記錄 185
8.2.1 一般資訊標籤組 185
8.2.2 記憶體標籤組 186
8.2.3 代碼標籤組 188
8.2.4 執行緒/鎖標籤組 190
8.2.5 延遲標籤組 192
8.2.6 使用操作集 195
8.3 故障排除 197
8.4 小結 198

第9章 JRockit Flight Recorder 199
9.1 JRA進化 199
9.1.1 關於事件 200
9.1.2 記錄引擎 200
9.1.3 啟動參數 202
9.2 在JRockit Mission Control中使用JFR 203
9.3 與JRA的區別 205
9.3.1 範圍選擇器 205
9.3.2 操作集 206
9.3.3 關聯鍵 206
9.3.4 延遲分析 206
9.3.5 異常分析 207
9.3.6 記憶體分析 209
9.4 自訂事件 210
9.5 擴展JFR 213
9.6 小結 215

第10章 Memory Leak Detector 216
10.1 Java記憶體洩漏 216
10.1.1 靜態程式設計語言中的記憶體洩漏 216
10.1.2 自動記憶體管理中的記憶體洩漏 217
10.2 檢測Java中的記憶體洩漏 217
10.3 Memleak簡介 218
10.4 追蹤記憶體洩漏 219
10.5 互動式追蹤記憶體洩漏 224
10.6 通用堆分析器 226
10.7 追蹤記憶體分配 227
10.8 問題排查 227
10.9 小結 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 小結 258

第12章 JRockit Management API 259
12.1 JMAPI 259
12.2 JMXMAPI 263
12.2.1 JRockit內部效能計數器 264
12.2.2 使用JMXMAPI構建可遠端操作的JRCMD 266
12.3 小結 270

第13章 JRockit Virtual Edition 271
13.1 虛擬化簡介 272
13.1.1 全虛擬化 272
13.1.2 半虛擬化 273
13.1.3 其他虛擬化術語 273
13.1.4 虛擬機器管理程式 273
13.1.5 虛擬化的優勢 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的優勢 284
13.2.4 JRockit VE的限制 287
13.3 虛擬化能媲美真實環境嗎 287
13.3.1 高品質的熱點代碼採樣 288
13.3.2 自我調整堆大小 288
13.3.3 執行緒間的頁保護 289
13.4 小結 291

附錄A 參考文獻 292
附錄B 術語表 296