大話 Java 性能優化 大话Java性能优化

周明耀

  • 出版商: 電子工業出版社
  • 出版日期: 2016-04-01
  • 售價: $534
  • 貴賓價: 9.5$507
  • 語言: 簡體中文
  • 頁數: 564
  • 裝訂: 平裝
  • ISBN: 7121284812
  • ISBN-13: 9787121284816
  • 相關分類: Java 程式語言

立即出貨

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

相關主題

商品描述

<內容介紹>

本書主要提供Java性能調優方面的參考建議及經驗交流。作者力求做到知識的綜合傳播,而不是僅僅只針對Java虛擬機調優進行講解,另外力求每一章節都有實際的案例支撐。具體包括:性能優化策略、程序編寫及硬件服務器的基礎知識、Java API優化建議、算法類程序的優化建議、並行計算優化建議、Java程序性能監控及檢測、JVM原理知識、其他相關優化知識等。
通讀本書後,讀者可以深入瞭解Java性能調優的許多主題及相關的綜合性知識。讀者也可以把本書作為參考,對於感興趣的主題,直接跳到相應章節尋找答案。
總的來說,性能調優在很大程度上是一門藝術,解決的Java性能問題越多,技藝才會越精湛。我們不僅要關心JVM的持續演進,也要積極地去瞭解底層的硬件平臺和操作系統的進步。

<章節目錄>
第1章性能調優策略概述1
1.1為什麼需要調優1
1.2性能優化的參考因素5
1.2.1傳統計算機體系的分歧5
1.2.2導致系統瓶頸的計算資源7
1.2.3程序性能衡量指標8
1.2 .4性能優化目標9
1.2.5性能優化策略10
1.3性能調優分類方法11
1.3.1業務方面12
1.3.2基礎技術方面12
1.3.3組件方面17
1.3.4架構方面19
1.3.5層次方面20
1.4本章小結21
第2章優化前的準備知識22
2.1服務器知識23
2.1.1內存23
2.1.2 GPU/CPU 44
2.1.3硬盤49
2.1.4網絡架構51
2.2新興技術53
第3章Java API調用優化建議54
3.1面向對象及基礎類型55
3.1.1採用Clone()方式創建對象55
3.1.2避免對boolean判斷55
3.1.3多用條件操作符56
3.1.4靜態方法代替實例方法56
3.1.5有條件地使用final關鍵字58
3.1.6避免不需要的instanceof操作58
3.1.7避免子類中存在父類轉換59
3.1.8建議多使用局部變量60
3.1.9運算效率最高的方式——位運算60
3.1.10用一維數組代替二維數組62
3.1.11布爾運算代替位運算64
3.1.12提取表達式優化65
3.1.13不要總是使用取反操作符(!) 66
3.1.14不要重複初始化變量66
3.1.15變量初始化過程思考66
3.1.16對象的創建、訪問過程69
3.1.17在switch語句中使用字符串70
3.1.18數值字面量的改進73
3.1.19優化變長參數的方法調用74
3.1.20針對基本數據類型的優化75
3.1.21空變量76
3.2集合類概念77
3.2.1快速刪除List裡面的數據78
3.2.2集合內部避免返回null 80
3.2.3 ArrayList、LinkedList比較82
3.2.4 Vector、HashTable比較85
3.2.5 HashMap使用經驗87
3.2.6 EnumSet、EnumMap 91
3.2.7 HashSet使用經驗92
3.2.8 LinkedHashMap、TreeMap比較96
3.2.9集合處理優化新方案99
3.2.10優先考慮並行計算107
3.3字符串概念108
3.3.1 String對象108
3.3.2善用String對象的SubString方法111
3.3.3用charat()代替startswith() 113
3.3.4在字符串相加的時候,使用' '代替" " 114
3.3.5字符串切割114
3.3.6字符串重編碼117
3.3.7合併字符串118
3.3.8正則表達式不是萬能的122
3.4引用類型概念123
3.4.1強引用( Strong Reference) 126
3.4.2軟引用(Soft Reference) 131
3.4.3弱引用(Weak Reference) 135
3.4.4引用隊列141
3.4.5虛引用(Phantom Reference) 142
3.5其他相關概念146
3.5.1 JNI技術提升146
3.5.2異常捕獲機制150
3.5.3 ExceptionUtils類154
3.5.4循環技巧155
3.5.5替換switch 157
3.5.6優化循環158
3.5.7使用arrayCopy() 159
3.5.8使用Buffer進行I/O操作161
3.5.9使用clone()代替new 164
3.5.10 I/O速度166
3.5.11 Finally方法裡面釋放或者關閉資源佔用167
3.5.12資源管理機制167
3.5.13犧牲CPU時間169
3.5.14對象操作172
3.5.15正則表達式172
3.5.16壓縮文件處理174
3.6本章小結175
第4章程序設計優化建議176
4.1算法優化概述176
4.1.1常用算法邏輯描述177
4.1.2多核算法優化原理186
4.1.3 Java算法優化實踐188
4.2設計模式196
4.2.1設計模式的六大準則196
4.2.2單一對象控制200
4.2.3並行程序設計模式202
4.2.4接口適配205
4.2.5訪問方式隔離219
4.3 I/O及網絡相關優化225
4.3.1 I/O操作優化225
4.3.2 Socket編程231
4.3.3 NIO 2.0文件系統235
4.4數據應用優化236
4.4.1關係型數據庫優化236
4.4.2向HBase插入大量數據240
4.4.3解決海量數據緩存251
4.5其他優化256
4.5.1 Web系統性能優化建議256
4.5.2死鎖情況解決方案259
4.5.3 JavaBeans組件268
4.6本章小結269
第5章Java並行程序優化建議270
5.1並行程序優化概述270
5.1.1資源限制帶來的挑戰271
5.1.2進程、線程、協程272
5.1.3使用多線程的原因281
5.1.4線程不安全範例282
5.1.5重排序機制284
5.1.6實例變量的數據共享286
5.1.7生產者與消費者模式288
5.1.8線程池的使用290
5.2鎖機制對比296
5.2.1鎖機制概述296
5.2.2 Synchronized使用技巧298
5.2.3 Volatile的使用技巧303
5.2.4隊列同步器304
5.2.5可重入鎖307
5.2.6讀寫鎖308
5.2.7偏向鎖和輕量級鎖309
5.3增加程序並行性310
5.3.1並發計數器311
5.3.2減少上下文切換次數312
5.3.3針對Thread類的更新314
5.3.4 Fork/Join框架314
5.3.5 Executor框架318
5.4 JDK類庫使用319
5.4.1原子值320
5.4.2並行容器324
5.4.3非阻塞隊列332
5.4.4阻塞隊列338
5.4.5並發工具類365
5.5本章小結376
第6章JVM性能測試及監控377
6.1監控計算機設備層378
6.1.1監控CPU 380
6.1.2監控內存405
6.1.3監控磁盤417
6.1.4監控網絡423
6.2監控JVM活動428
6.2.1監控垃圾收集目的429
6.2.2 GC垃圾回收報告分析430
6.2.3圖形化工具431
6.2.4 GC跟蹤示例437
6.3本章小結438
第7章JVM性能調優建議439
7.1 JVM相關概念439
7.1.1內存使用相關概念440
7.1.2字節碼相關知識443
7.1.3自動內存管理448
7.2 JVM系統架構451
7.2. 1 JVM的基本架構451
7.2.2 JVM初始化過程453
7.2.3 JVM架構模型與執行引擎456
7.2.4解釋器與JIT編譯器456
7.2.5類加載機制457
7.2.6虛擬機458
7.3垃圾回收機制相關459
7.3.1 GC相關概念459
7.3.2垃圾回收算法468
7.3.3垃圾收集器476
7.4實用JVM實驗490
7.4.1將新對象預留在年輕代490
7.4.2大對象進入年老代494
7.4.3設置對象進入年老代的年齡495
7.4.4穩定與震蕩的堆大小497
7.4.5吞吐量優先案例498
7.4.6使用大頁案例499
7.4.7降低停頓案例499
7.4.8設置最大堆內存499
7.4.9設置最小堆內存500
7.4.10設置年輕代503
7.4.11設置持久代504
7.4.12設置線程棧504
7.4.13堆的比例分配505
7.4.14堆分配參數總結508
7.4. 15垃圾回收器相關參數總結509
7.4.16查詢GC命令515
7.5本章小結515
第8章其他優化建議516
8.1 Java現有機制及未來發展516
8.1.1 Java體系結構變化歷史516
8.1.2 Java語言面臨的挑戰520
8.1.3 Java 8的新特性522
8.1.4 Java語言前景523
8.1.5物聯網:Java和你是一對524
8.1.6 Java模塊化發展525
8.1.7 OpenJDK的發展527
8.2系統架構優化建議528
8.2.1系統架構調優528
8.2.2 Java項目優化方式分享530
8.2.3面向服務架構534
8.2.4程序隔離技術538
8.2.5團隊並行開發準則544
8.3與編程無關546
8.3.1工程師品格546
8.3.2如何成為技術大牛547
8.3.3編程方法分享548
8.4本章小結549