Java程序性能優化:讓你的Java程序更快、更穩定 pdf epub mobi txt 電子書 下載 2024

圖書介紹


Java程序性能優化:讓你的Java程序更快、更穩定


葛一鳴 等 著



點擊這裡下載
    


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

发表于2024-12-22

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

齣版社: 清華大學齣版社
ISBN:9787302296256
版次:1
商品編碼:11099999
品牌:清華大學
包裝:平裝
叢書名: 王者歸來
開本:16開
齣版時間:2012-09-01
用紙:膠版紙
頁數:416
字數:649000
正文語種:中文

Java程序性能優化:讓你的Java程序更快、更穩定 epub 下載 mobi 下載 pdf 下載 txt 電子書 下載 2024

相關圖書



Java程序性能優化:讓你的Java程序更快、更穩定 epub 下載 mobi 下載 pdf 下載 txt 電子書 下載 2024

Java程序性能優化:讓你的Java程序更快、更穩定 pdf epub mobi txt 電子書 下載 2024



具體描述

編輯推薦

  

  Java程序員進階必讀經典,纍計6次印刷
  榮獲51CTO讀書頻道“受讀者喜愛的原創IT技術圖書奬”

  數韆讀者好評,上萬讀者的選擇,數萬Java愛好者和程序員受益匪淺!
  一個優秀的程序員,不僅要會編寫程序,更要會編寫高質量的程序
  感受Java開發中的大智慧,讓你的Java程序更優美
  專注於Java應用程序的優化方法、技巧和思想
  深入剖析軟件設計層麵、代碼層麵、JVM虛擬機層麵的優化方法
  理論結閤實際,使用豐富的示例幫助讀者理解理論知識
  

內容簡介

  Java是目前應用為廣泛的軟件開發平颱,學習針對Java程序的優化方法有重要的現實意義。《Java程序性能優化:讓你的Java程序更快、更穩定》以Java性能調優為主綫,係統地闡述瞭與Java性能優化相關的知識與技巧。
  《Java程序性能優化:讓你的Java程序更快、更穩定》共6章,先後從軟件設計、軟件編碼、JVM調優以及程序故障排斥等方麵介紹針對Java程序的優化方法。第1章介紹性能的基本概念、定律、係統調優的過程和注意事項。第2章從設計層麵介紹與性能相關的設計模式、組件。第3章從代碼層麵介紹如何編寫高性能的Java程序。第4章介紹瞭並行開發和如何通過多綫程提高係統性能。第5章立足於JVM虛擬機層麵,介紹如何通過設置閤理的JVM參數提升Java程序的性能。第6章為工具篇,介紹瞭獲取和監控程序或係統性能指標的各種工具,包括相關的故障排查工具。
  《Java程序性能優化:讓你的Java程序更快、更穩定》適閤所有Java程序員、軟件設計師、架構師以及軟件開發愛好者,對於有一定經驗的Java工程師,本書更能幫助他突破技術瓶頸,深入Java內核開發!

作者簡介

  葛一鳴,畢業於浙江工業大學,獲得瞭計算機軟件與理論專業碩士學位。取得瞭國傢認證係統分析師職稱、OCP(Oracle數據庫認證專傢)。現就職於UT斯達康通訊有限公司,從事Java軟件開發。有多年的軟件開發經驗,參與開發過多個軟件項目。熟悉Java、PHP、MySQL、Oracle等開發語言和數據庫,對Java軟件開發、性能優化、分布式軟件有著濃厚的興趣和深入的研究。在校期間曾經發錶過多篇技術論文。

內頁插圖

目錄

第1章 Java性能調優概述
1.1 性能概述
1.1.1 看懂程序的性能
1.1.2 性能的參考指標
1.1.3 木桶原理與性能瓶頸
1.1.4 Amdahl定律
1.2 性能調優的層次
1.2.1 設計調優
1.2.2 代碼調優
1.2.3 JVM調優
1.2.4 數據庫調優
1.2.5 操作係統調優
1.3 基本調優策略和手段
1.3.1 優化的一般步驟
1.3.2 係統優化注意事項
1.4 小結

第2章 設計優化
2.1 善用設計模式
2.1.1 單例模式
2.1.2 代理模式
2.1.3 享元模式
2.1.4 裝飾者模式
2.1.5 觀察者模式
2.1.6 Value Object模式
2.1.7 業務代理模式
2.2 常用優化組件和方法
2.2.1 緩衝(Buffer)
2.2.2 緩存(Cache)
2.2.3 對象復用——“池”
2.2.4 並行替代串行
2.2.5 負載均衡
2.2.6 時間換空間
2.2.7 空間換時間
2.3 小結

第3章 Java程序優化
3.1 字符串優化處理
3.1.1 String對象及其特點
3.1.2 subString()方法的內存泄漏
3.1.3 字符串分割和查找
3.1.4 StringBuffer和StringBuilder
3.2 核心數據結構
3.2.1 List接口
3.2.2 Map接口
3.2.3 Set接口
3.2.4 優化集閤訪問代碼
3.2.5 RandomAccess接口
3.3 使用NIO提升性能
3.3.1 NIO的Buffer類族和Channel
3.3.2 Buffer的基本原理
3.3.3 Buffer的相關操作
3.3.4 MappedByteBuffer性能評估
3.3.5 直接內存訪問
3.4 引用類型
3.4.1 強引用
3.4.2 軟引用
3.4.3 弱引用
3.4.4 虛引用
3.4.5 WeakHashMap類及其實現
3.5 有助於改善性能的技巧
3.5.1 慎用異常
3.5.2 使用局部變量
3.5.3 位運算代替乘除法
3.5.4 替換switch
3.5.5 一維數組代替二維數組
3.5.6 提取錶達式
3.5.7 展開循環
3.5.8 布爾運算代替位運算
3.5.9 使用arrayCopy ()
3.5.10 使用Buffer進行I/O操作
3.5.11 使用clone()代替new
3.5.12 靜態方法替代實例方法
3.6 小結

第4章 並行程序開發及優化
4.1 並行程序設計模式
4.1.1 Future模式
4.1.2 Master-Worker模式
4.1.3 Guarded Suspension模式
4.1.4 不變模式
4.1.5 生産者-消費者模式
4.2 JDK多任務執行框架
4.2.1 無限製綫程的缺陷
4.2.2 簡單的綫程池實現
4.2.3 Executor框架
4.2.4 自定義綫程池
4.2.5 優化綫程池大小
4.2.6 擴展ThreadPoolExecutor
4.3 JDK並發數據結構
4.3.1 並發List
4.3.2 並發Set
4.3.3 並發Map
4.3.4 並發Queue
4.3.5 並發Deque
4.4 並發控製方法
4.4.1 Java內存模型與volatile
4.4.2 同步關鍵字synchronized
4.4.3 ReentrantLock重入鎖
4.4.4 ReadWriteLock讀寫鎖
4.4.5 Condition對象
4.4.6 Semaphore信號量
4.4.7 ThreadLocal綫程局部變量
4.5 “鎖”的性能和優化
4.5.1 綫程的開銷
4.5.2 避免死鎖
4.5.3 減小鎖持有時間
4.5.4 減小鎖粒度
4.5.5 讀寫分離鎖來替換獨占鎖
4.5.6 鎖分離
4.5.7 重入鎖ReentrantLock和內部鎖synchronized
4.5.8 鎖粗化(Lock Coarsening)
4.5.9 自鏇鎖(Spinning Lock)
4.5.10 鎖消除(Lock Elimination)
4.5.11 鎖偏嚮(Biased Lock)
4.6 無鎖的並行計算
4.6.1 非阻塞的同步/無鎖
4.6.2 原子操作
4.6.3 Amino框架介紹
4.6.4 Amino集閤
4.6.5 Amino樹
4.6.6 Amino圖
4.6.7 Amino簡單調度模式
4.7 協程
4.7.1 協程的概念
4.7.2 Kilim框架簡介
4.7.3 Task及其狀態
4.7.4 Fiber及其狀態
4.7.5 Kilim開發環境配置
4.7.6 Kilim之Hello World
4.7.7 多任務通信
4.7.8 Kilim實例及性能評估
4.8 小結

第5章 JVM調優
5.1 Java虛擬機內存模型
5.1.1 程序計數器
5.1.2 Java虛擬機棧
5.1.3 本地方法棧
5.1.4 Java堆
5.1.5 方法區
5.2 JVM內存分配參數
5.2.1 設置最大堆內存
5.2.2 設置最小堆內存
5.2.3 設置新生代
5.2.4 設置持久代
5.2.5 設置綫程桟
5.2.6 堆的比例分配
5.2.7 堆分配參數總結
5.3 垃圾收集基礎
5.3.1 垃圾收集的作用
5.3.2 垃圾迴收算法與思想
5.3.3 垃圾收集器的類型
5.3.4 評價GC策略的指標
5.3.5 新生代串行收集器
5.3.6 老年代串行收集器
5.3.7 並行收集器
5.3.8 新生代並行迴收(Parallel Scavenge)收集器
5.3.9 老年代並行迴收收集器
5.3.10 CMS收集器
5.3.11 G1收集器(Garbage First)
5.3.12 Stop the World案例
5.3.13 收集器對係統性能的影響
5.3.14 GC相關參數總結
5.4 常用調優案例和方法
5.4.1 將新對象預留在新生代
5.4.2 大對象進入老年代
5.4.3 設置對象進入老年代的年齡
5.4.4 穩定與震蕩的堆大小
5.4.5 吞吐量優先案例
5.4.6 使用大頁案例
5.4.7 降低停頓案例
5.5 實用JVM參數
5.5.1 JIT編譯參數
5.5.2 堆快照(堆Dump)
5.5.3 錯誤處理
5.5.4 取得GC信息
5.5.5 類和對象跟蹤
5.5.6 控製GC
5.5.7 選擇類校驗器
5.5.8 Solaris下綫程控製
5.5.9 使用大頁
5.5.10 壓縮指針
5.6 實戰JVM調優
5.6.1 Tomcat簡介與啓動加速
5.6.2 Web應用程序介紹
5.6.3 JMeter介紹與使用
5.6.4 調優前Web應用運行狀況
5.6.5 調優過程
5.7 總結

第6章 Java性能調優工具
6.1 Linux命令行工具
6.1.1 top命令
6.1.2 sar命令
6.1.3 vmstat命令
6.1.4 iostat命令
6.1.5 pidstat工具
6.2 Windows工具
6.2.1 任務管理器
6.2.2 perfmon性能監控工具
6.2.3 Process Explorer
6.2.4 pslist命令行
6.3 JDK命令行工具
6.3.1 jps命令
6.3.2 jstat命令
6.3.3 jinfo命令
6.3.4 jmap命令
6.3.5 jhat命令
6.3.6 jstack命令
6.3.7 jstatd命令
6.3.8 hprof工具
6.4 JConsole工具
6.4.1 JConsole連接Java程序
6.4.2 Java程序概況
6.4.3 內存監控
6.4.4 綫程監控
6.4.5 類加載情況
6.4.6 虛擬機信息
6.4.7 MBean管理
6.4.8 使用插件
6.5 Visual VM多閤一工具
6.5.1 Visual VM連接應用程序
6.5.2 監控應用程序概況
6.5.3 Thread Dump和分析
6.5.4 性能分析
6.5.5 快照
6.5.6 內存快照分析
6.5.7 MBean管理
6.5.8 TDA使用
6.5.9 BTrace介紹
6.6 Visual VM對OQL的支持
6.6.1 Visual VM的OQL基本語法
6.6.2 內置heap對象
6.6.3 對象函數
6.6.4 集閤/統計函數
6.6.5 程序化OQL
6.7 MAT內存分析工具
6.7.1 初識MAT
6.7.2 淺堆和深堆
6.7.3 支配樹(Dominator Tree)
6.7.4 垃圾迴收根
6.7.5 內存泄露檢測
6.7.6 最大對象報告
6.7.7 查找支配者
6.7.8 綫程分析
6.7.9 集閤使用情況分析
6.7.10 擴展MAT
6.8 MAT對OQL的支持
6.8.1 Select子句
6.8.2 From子句
6.8.3 Where子句
6.8.4 內置對象與方法
6.9 JProfile簡介
6.9.1 JProfile使用配置
6.9.2 內存視圖
6.9.3 堆快照
6.9.4 CPU視圖
6.9.5 綫程視圖
6.9.6 JVM統計信息
6.9.7 觸發器
6.10 小結

精彩書摘

  第1章 Java性能調優概述
  本章對性能優化技術進行整體性的介紹,讓讀者瞭解性能的概念和性能優化的基本思路與方法。掌握這些內容,有助於讀者對性能問題進行係統性的分析。
  本章涉及的主要知識點有:
  *評價性能的主要指標;
  *木桶原理的概念及其在性能優化中的應用;
  *Amdahl定律的含義;
  *性能調優的層次;
  *係統優化的一般步驟和注意事項。
  1.1性能概述
  為什麼程序總是那麼慢?它現在到底在乾什麼?時間都花到哪裏去瞭?也許,你經常會抱怨這些問題。如果是這樣,那說明你的程序齣瞭性能問題。和功能性問題相比,性能問題在有些情況下,可能並不算什麼太大的問題,將就將就,也就過去瞭。但是,嚴重的性能問題會導緻程序癱瘓、假死,直至奔潰。本節就先來認識性能的各種錶現和指標。
  1.1.1看懂程序的性能
  對客戶端程序而言,拙劣的性能會嚴重影響用戶體驗。界麵停頓、抖動、響應遲鈍等問題會遭到用戶不停的抱怨。一個典型的例子就是EclipseIDE工具在FullGC時會齣現程序假死現象,相信一定被不少開發人員所詬病。對於服務器程序來說,性能問題則更為重要,相信不少後颱服務器軟件都有各自的性能目標。以Web服務器為例,服務器的響應時間、吞吐量就是兩個重要的性能參數。當服務器承受巨大的訪問壓力時,可能齣現響應時間變長、吞吐量下降,甚至是拋齣內存溢齣異常而崩潰。這些問題,都是性能調優需要解決的。
  一般來說,程序的性能通過以下幾個方麵來錶現:
  *執行速度:程序的反映是否迅速,響應時間是否足夠短。
  *內存分配:內存分配是否閤理,是否過多地消耗內存或者存在泄漏。
  *啓動時間:程序從運行到可以正常處理業務需要花費多長時間。
  *負載承受能力:當係統壓力上升時,係統的執行速度、響應時間的上升麯綫是否平緩。
  1.1.2性能的參考指標
  為瞭能夠科學地進行性能分析,對性能指標進行定量評測是非常重要的。目前,一些可以用於定量評測的性能指標有:
  *執行時間:一段代碼從開始運行到運行結束,所使用的時間。
  *CPU時間:函數或者綫程占用CPU的時間。
  *內存分配:程序在運行時占用的內存空間。
  *磁盤吞吐量:描述I/O的使用情況。
  *網絡吞吐量:描述網絡的使用情況。
  *響應時間:係統對某用戶行為或者事件做齣響應的時間。響應時間越短,性能越好。
  1.1.3木桶原理與性能瓶頸
  木桶原理又稱“短闆理論”,其核心思想是:一隻木桶盛水的多少,並不取決於桶壁上最高的那塊木塊,而是取決於桶壁上最短的那塊,如圖1.1所示。
  圖1.1木桶原理示意圖
  將這個理論應用到係統性能優化上,可以這麼理解,即使係統擁有充足的內存資源和CPU資源,但是如果磁盤I/O性能低下,那麼係統的總體性能是取決於當前最慢的磁盤I/O速度,而不是當前最優越的CPU或者內存。在這種情況下,如果需要進一步提升係統性能,優化內存或者CPU資源是毫無用處的。隻有提高磁盤I/O性能纔能對係統的整體性能進行優化。而此時,磁盤I/O就是係統的性能瓶頸。
  ·注意:根據木桶原理,係統的最終性能取決於係統中性能錶現最差的組件。因此,為瞭提升係統整體性能,必須對係統中錶現最差的組件進行優化,而不是對係統中錶現良好的組件進行優化。
  根據應用的特點不同,任何計算機資源都有可能成為係統瓶頸。其中,最有可能成為係統瓶頸的計算資源如下。
  *磁盤I/O:由於磁盤I/O讀寫的速度要比內存慢很多,程序在運行過程中,如果需要等待磁盤I/O完成,那麼低效的I/O操作會拖纍整個係統。
  *網絡操作:對網絡數據進行讀寫的情況與磁盤I/O類似。由於網絡環境的不確定性,尤其是對互聯網上數據的讀寫,網絡操作的速度可能比本地磁盤I/O更慢。因此,如不加特殊處理,也極可能成為係統瓶頸。
  *CPU:對計算資源要求較高的應用,由於其長時間、不間斷地大量占用CPU資源,那麼對CPU的爭奪將導緻性能問題。如科學計算、3D渲染等對CPU需求旺盛的應用。
  *異常:對Java應用來說,異常的捕獲和處理是非常消耗資源的。如果程序高頻率地進行異常處理,則整體性能便會有明顯下降。
  *數據庫:大部分應用程序都離不開數據庫,而海量數據的讀寫操作可能是相當費時的。而應用程序可能需要等待數據庫操作完成或者返迴請求的結果集,那麼緩慢的同步操作將成為係統瓶頸。
  *鎖競爭:對高並發程序來說,如果存在激烈的鎖競爭,無疑是對性能極大的打擊。鎖競爭將會明顯增加綫程上下文切換的開銷。而且,這些開銷都是與應用需求無關的係統開銷,白白占用寶貴的CPU資源,卻不帶來任何好處。
  *內存:一般來說,隻要應用程序設計閤理,內存在讀寫速度上不太可能成為性能瓶頸。除非應用程序進行瞭高頻率的內存交換和掃描,但這些情況比較少見。使內存製約係統性能的最可能的情況是內存大小不足。與磁盤相比,內存的大小似乎小的可憐,這意味著應用軟件隻能盡可能將常用的核心數據讀入內存,這在一定程度上降低瞭係統性能。
  1.1.4Amdahl定律
  Amdahl定律是計算機科學中非常重要的定律,它定義瞭串行係統並行化後加速比的計算公式和理論上限。
  加速比定義:加速比=優化前係統耗時/優化後係統耗時
  所謂加速比,就是優化前的耗時與優化後耗時的比值。加速比越高,錶明優化效果越明顯。
  Amdahl定律給齣瞭加速比與係統並行度和處理器數量的關係。設加速比為Speedup,係統內必須串行化的程序比重為F,CPU處理器數量為N,則有:
  根據這個公式,如果CPU處理器數量趨於無窮,那麼加速比與係統的串行化率成反比,如果係統中必須有50%的代碼串行執行,那麼係統的最大加速比為2。
Java程序性能優化:讓你的Java程序更快、更穩定 下載 mobi epub pdf txt 電子書
Java程序性能優化:讓你的Java程序更快、更穩定 pdf epub mobi txt 電子書 下載
想要找書就要到 求知書站
立刻按 ctrl+D收藏本頁
你會得到大驚喜!!

用戶評價

評分

諾,你要的好評諾。

評分

推薦,好書,講得非常細,非常好

評分

不錯不錯。希望物有所值。

評分

此用戶未及時評價,係統默認好評。

評分

理論基礎,專業必備,正版,性價比高,幫助很大。

評分

不錯(*?´╰╯`?)?不錯(*?´╰╯`?)?不錯(*?´╰╯`?)?

評分

123

評分

??

評分

作為一個程序員有必要寫齣性能優秀的代碼。等看完再來評價書的內容吧。

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

Java程序性能優化:讓你的Java程序更快、更穩定 pdf epub mobi txt 電子書 下載





相關圖書


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

友情鏈接

© 2024 tushu.tinynews.org All Rights Reserved. 求知書站 版权所有