Java性能權(quán)威指南.pdf
http://www.www.srpcoatings.com
2020年11月18日
![]() |
| 第1頁 |
![]() |
| 第8頁 |
![]() |
| 第15頁 |
![]() |
| 第28頁 |
![]() |
| 第41頁 |
![]() |
| 第213頁 |
參見附件(67726KB,331頁)。
Java性能權(quán)威指南對Java 7和Java 8中影響性能的因素展開了全面深入的介紹,講解傳統(tǒng)上影響應(yīng)用性能的JVM特征,包括即時編譯器、垃圾收集、語言特征等。內(nèi)容包括:用G1垃圾收集器應(yīng)用的吞吐量;使用Java飛行記錄器查看性能細(xì)節(jié),而不必借助專業(yè)的分析工具;堆內(nèi)存與原生內(nèi)存實踐;線程與同步的性能,以及數(shù)據(jù)庫性能實踐等。

編輯推薦
市面上介紹Java的書有很多,但專注于Java性能的并不多,能游刃有余地展示Java性能優(yōu)化難點的更是鳳毛麟角,本書即是其中之一。通過使用JVM和Java平臺,以及Java語言和應(yīng)用程序接口,本書詳盡講解了Java性能調(diào)優(yōu)的相關(guān)知識,幫助讀者深入理解Java平臺性能的各個方面,使程序如虎添翼。
通過閱讀本書,你可以:
運用四個基本原則大程度地提升性能測試的效果
使用JDK中自帶的工具收集Java應(yīng)用的性能數(shù)據(jù)
理解JIT編譯器的優(yōu)缺點
調(diào)優(yōu)JVM垃圾收集器以減少對程序的影響
學(xué)習(xí)管理堆內(nèi)存和JVM原生內(nèi)存的方法
了解如何大程度地優(yōu)化Java線程及同步的性能
解決Java EE和Java SE應(yīng)用程序接口的性能問題
改善Java驅(qū)動的數(shù)據(jù)庫應(yīng)用程序的性能
作者簡介
Scott Oaks是Oracle公司的一位架構(gòu)師,專注研究Oracle中間件軟件的性能。加入Oracle之前,他曾于Sun Microsystem公司任職多年,在多個技術(shù)領(lǐng)域都有建樹,包括SunOS的內(nèi)核、網(wǎng)絡(luò)程序設(shè)計、Windows系統(tǒng)的遠(yuǎn)程方法調(diào)用(RPC)以及OPEN LOOK虛擬窗口管理器。1996年,Scott成為Sun公司的Java布道師,并于2001年加入Sun公司的Java性能小組——從那時起他就一直專注于Java的性能提升。此外,Scott也在O'Reilly出版社出版了多部書籍,包括Java Security、Java Threads、JXTA in a Nutshell和Jini in a Nutshell。
導(dǎo)論
這是一本關(guān)于Java性能調(diào)優(yōu)科學(xué)和藝術(shù)的書。
說性能調(diào)優(yōu)是門科學(xué),這并不令人意外;性能調(diào)優(yōu)涉及大量數(shù)字、檢測和分析工作。性能調(diào)優(yōu)工程師大多具有科學(xué)背景,只有基于嚴(yán)謹(jǐn)?shù)目茖W(xué)理論才能將性能發(fā)揮到極致。
那它的藝術(shù)性呢?其實性能調(diào)優(yōu)是科學(xué)與藝術(shù)的結(jié)合體這一說法并不新鮮,但我們探討性能時卻很少能清楚地意識到這一點。從某種程度上說,這可能是因為我們所受的教育訓(xùn)練并不容易產(chǎn)生“藝術(shù)”的思想火花。
說它是藝術(shù)的部分原因是,對一些人來說,藝術(shù)從根本上就是建立在知識和經(jīng)驗的基礎(chǔ)上的。據(jù)說,足夠先進(jìn)的技術(shù)與魔術(shù)無異,例如對于圓桌騎士而言,使用手機(jī)毫無疑問就是一種魔法。與此類似,優(yōu)秀性能調(diào)優(yōu)工程師的工作就像是藝術(shù),而這藝術(shù)正是源于深厚的知識、豐富的經(jīng)驗和敏銳的直覺。
本書的側(cè)重點不在于三者中的經(jīng)驗和直覺,而是在拓展知識的深度。日積月累,這些知識將有助于提升你的技能,有助于你成為一名優(yōu)秀的Java性能調(diào)優(yōu)工程師。本書還有助于你深入理解Java平臺性能的各個方面。
本書涉及的知識主要分兩大類。首先是如何Java機(jī)(Java Virtual Machine,JVM)
自身的性能進(jìn)行調(diào)優(yōu),即如何通過JVM的配置來影響程序的各種性能指標(biāo)。JVM性能調(diào)優(yōu)的過程實際上與C++程序員在編譯時通過測試選擇編譯參數(shù),以及PHP碼農(nóng)在php.ini文件中選擇適當(dāng)變量等過程非常類似,但對于那些即便有其他語言經(jīng)驗的Java開發(fā)者來說,調(diào)優(yōu)過程仍然不那么令人愉快。
其次是理解Java平臺的特性對性能的影響。注意,此處的平臺既指Java語言(例如線程和同步),也指Java標(biāo)準(zhǔn)API(例如XML解析性能),雖然Java語言和Java API完全不是一回事,但本書并不作嚴(yán)格區(qū)分,這兩方面的內(nèi)容都會涵蓋。
JVM自身的性能很大程度上取決于調(diào)優(yōu)標(biāo)志,而Java平臺的性能則更多由在應(yīng)用代碼中采用最佳實踐決定。在一個開發(fā)團(tuán)隊中,開發(fā)人員編寫代碼,性能組負(fù)責(zé)性能測試。編碼和調(diào)優(yōu)常常被認(rèn)為是兩個不同的專業(yè)領(lǐng)域:性能調(diào)優(yōu)工程師只是竭力將JVM的性能發(fā)揮到極致,而開發(fā)人員只關(guān)心他們的代碼邏輯是否正確。這種區(qū)分沒有什么意義。任何從事Java相關(guān)工作的人都應(yīng)該熟諳代碼在JVM中的行為,以及如何調(diào)優(yōu)才能提升性能。對專業(yè)知識的全面掌握能讓你的工作更具藝術(shù)氣息。
吞吐量測試
吞吐量測試是基于一段時間內(nèi)所能完成的工作量。雖然最常見的吞吐量測試是服務(wù)器處理客戶端產(chǎn)生的數(shù)據(jù),但這并非絕對的:單個獨立運行的應(yīng)用也可以像測量流逝時間一樣測量吞吐量。
在客戶端一服務(wù)器的吞吐量測試中,并不考慮客戶端的思考時間?蛻舳讼蚍⻊(wù)器發(fā)送請求,當(dāng)它收到響應(yīng)時,立刻發(fā)送新的請求。持續(xù)這樣的過程,等到測試結(jié)束時,客戶端會報告它所完成的操作總量?蛻舳顺3S卸鄠線程在處理,所以吞吐量就是所有客戶端所完成的操作總量。通常這個數(shù)字就是每秒完成的操作量,而不是測量期間的總操作量。這個指標(biāo)常常被稱作每秒事務(wù)數(shù)(TPS)、每秒請求數(shù)(RPS)或每秒操作次數(shù)(OPS)
所有的客戶端-服務(wù)器測試都存在風(fēng)險,即客戶端不能足夠快地向服務(wù)器發(fā)送數(shù)據(jù)。這可能是由于客戶端機(jī)器的CPU不足以支持所需數(shù)量的客戶端線程,也可能是因為客戶端需要花大量時間處理響應(yīng)才能發(fā)送新的請求。在這些場景中,測試衡量的其實是客戶端性能而不是服務(wù)器性能,這并不是我們的目的。
其中的風(fēng)險依賴于每個線程所承載的工作量(客戶端機(jī)器的線程數(shù)和配置)。由于客戶端線程需要執(zhí)行大量工作,零思考時間(面向吞吐量)測試更可能會遇到這種情形。因此,通常吞吐量測試比響應(yīng)時間測試的線程數(shù)少,線程負(fù)載也小。
通常吞吐量測試也會報告請求的平均響應(yīng)時間。這是重要的信息,但它的變化并不表示性能有問題,除非報告的吞吐量相同。能夠承受500 OPS,響應(yīng)時間0.5秒的服務(wù)器,它的性能要好過響應(yīng)時間0.3秒但只有4000PS的服務(wù)器。
吞吐量測試總是在合適的熱身期之后進(jìn)行,特別是因為所測量的東西并不固定。
Java性能權(quán)威指南截圖



您現(xiàn)在查看是摘要介紹頁, 詳見PDF附件(67726KB,331頁)。
威指南_1.jpg)
威指南_2.jpg)
威指南_3.jpg)
威指南_4.jpg)
威指南_5.jpg)
威指南_6.jpg)