每個公司都要求程式設計師寫出效能良好、維護性強的程式碼,各種高階職位的任職要求也會把優化系統作為必選要求之一。當業務系統重構時,以及各種網際網路大促前,也都期望系統的效能能變得更好。如何提高系統效能?簡單的辦法是升級系統硬體,或者購置更多的機器水平擴充套件系統,從而減少單機負荷以實現效能提高。這些辦法簡單粗暴,雖然效果立竿見影,但長期來看,投入大,產出小。隨著系統中越來越多「壞味道」程式碼的堆積,這些辦法的效果越來越不明顯,提高單機系統的效能迫在眉睫,那麼有沒有優化Java系統自身的辦法呢?市場上關於這方面的書籍或者聚焦於簡單的開發規範,或者是純理論的講解。此檔案嘗試把Java效能優化和實際業務系統結合起來一起講解,期望可以為讀者提供一種可操作的指導來優化Java系統效能。
本書分為五部分,總共11章。
第一部分是第1章到第5章
第1章通過一個不超過 10行的程式碼優化範例介紹 如何對Java系統進行優化,如何使用JMH驗證效能優化;
第2章和第3章介紹JDK的核心類String、Number和並行包;
第4章通過20多個優化技巧來說明Java效能優化的各種方法;
第5章介紹了常用的高效能工具,如Caffeine、Jackson、 HikariCP, 並對其高效能的原因做了一定的原始碼解析。
第二部分是第6章和第7章
不同於程式碼規範,這部分強調編寫易於閱讀的程式碼,會從程式碼註釋、程式碼分解、物件導向三方面進行講解。容易閱讀的程式碼是系統效能優化的前提。
第三部分是第8章,介紹JIT優化
JIT優化對Java系統執行有深刻的影響,本章系統介紹了JIT編譯器、程式碼快取、內聯等知識。
第四部分是第9章
包含30多個具有「壞味道」的程式碼片段,讀者可以嘗試優化程式碼。
第五部分是第10章和第11章
第10章介紹Java位元組碼和ASM,用於執行時增強Java系統;
第11章介紹JSR269規範,用於編譯時增強Java系統。通過使用這些技術,可以有效提升系統的維護性和效能。
滴滴滴!轉發+關注,文末即可~
現代大規模關鍵性系統中的Java效能調優,是一項富有挑戰的任務。你需要關注各種問題,包括演演算法結構、記憶體分配模式以及磁碟和檔案I/0的使用方式。
效能調優最困難的是找出問題,即便是經驗豐富的人也會被他們的直覺所誤導。效能殺手總是隱藏在最意想不到的地方。正如維基百科所言:「科學(來自拉丁文scientia,意思是‘ 知識' )是以對世界可證實的解釋和預見來構建和組織知識的系統。」效能調優正是這樣一門實驗科學, 你需要構建和進行實驗,然後根據實驗結果建立理論假設。所幸實驗所用的效能監控工具在Java 世界裡隨處可見,既有可獨立執行的應用程式,也有開發環境內建的效能分析工具,還有作業系統提供的工具。綜合運用這些工具,才能從資料汪洋中找出真相。
主要目錄大綱:
第1章「策略、方法和方法論」
介紹了Java效能調優實踐中的各種方法、策略和方法論,並對傳統軟體開發過程提出了改進建議,即在軟體開發中應該提前考慮軟體應用的效能和可延伸性。
第2章「作業系統效能監控」
討論了作業系統的效能監控,介紹了作業系統中重要的監控統計資訊,以及如何用工具監控這些統計資訊。本章涉及的作業系統包括Windows、Linux及OracleSolaris在其他基於Unix的系統(例如Mac OS X).上監控效能統計資訊時,可使用與Linux或Oracle Solaris相同或類似的命令。
第3章「JVM概覽"
高屋建瓴地介紹了HotSpot VM,描述了現代Java 虛擬機器器架構和運轉的基本概念,併為後續的諸多章節奠定了基礎。本章沒有覆蓋所有的Java 效能調優問題,也沒有提供Java效能問題所需的全部背景知識。但對於絕大多數與現代Java虛擬機器器內部機制密切相關的效能問題,本章提供了足夠多的背景知識。結合第7章的內容,有助於你領會如何進行HotSpot VM調優,本章也有助於理解第8、9章的主題,即如何編寫高效的基準測試。
第4章「JVM效能監控」
顧名思義,涵蓋了JVM效能監控的相關內容,介紹了重點需要監控的JVM統計資料,以及監控這些統計資料的工具。本章最後指出,這些工具擴充套件之後可以一併監控JVM和Java應用的統計資料。
第5章「Java應用效能分析」與第6章「Java 應用效能分析技巧」講述效能分析。
這兩章可看成第2章和第4章效能監控的補充。效能監控通常用來考察是否存在效能問題,或者為定位效能問題提供線索,告訴人們問題是出在作業系統、JVM、Java 應用程式還是其他地方。一旦發現效能問題,並進一步通過效能監控定位之後,通常就能進行效能分析了。第5章介紹分析Java方法和Java 堆(記憶體)的基本技術,還推薦了一些免費 工具來說明這幾種效能分析技術背後所蘊藏的概念。本章提及的工具並不是效能分析僅有的手段,還有許多商業或者免費的工具也能提供類似的功能,其中一 些工具的功能甚至超出了第5章涉及的技術範圍。
第6章提供了一些技巧
用來識別一些常見的效能分析模式,這些模式指示了一些特定型別的效能問題。本章所列的經驗和技巧並不完整,卻是作者在多年Java 效能調優過程中經常碰到的。附錄B中包含了第6章大部分範例的原始碼。
第7章「JVM效能調優入門」
涵蓋了HotSpot VM效能調優的諸多方面,包括啟動、記憶體佔用、響應時間/延遲以及吞吐量。第7章介紹了調優的一系列步 驟,包括選擇哪個JIT編譯器,選用何種垃圾收集器,怎樣調整Java堆,以及如何改動應用程式以符合干係人設定的效能目標。對於大多數讀者來說,第7章可能是本書中最有用和最值得參考的章節。
第8章「Java應用的基準測試」和第9章「多層應用的基準測試」
探討如何編寫高效的基準測試。通常來說,基準測試是通過應用程式的功能子集來衡量Java 應用的效能。這兩章還將展示建立高效Java 基準測試的藝術。第8章涵蓋了與編寫高效基準測試相關的較通用的主題,例如探討現代JVM的一-些優化方法,還介紹瞭如何在基準測試中運用統計方法以增強基準測試的準確性。第9章則重點關注如何編寫高效的Java EE基準測試。
有些讀者對Java EE應用的效能調優特別感興趣,第10 章「Web應用的效能調優」、第11章「Web Service的效能」及第12章「Java 持久化和Enterprise Java Bean的效能」,分別著重介紹了Web應用、Web Service、持久化及Enterprise Java Bean的效能分析。這3章會深入分析Java EE應用中常遇到的效能問題,併為常見的Java EE效能問題提供建議或解決方案。
「對Java程式做效能優化,不僅要對應用的程式碼實現有足夠的瞭解,還需要對更底層的OS、JVM有較深的瞭解。Java程式設計師也需要掌握的OS、JVM層面的很多知識;更吸引人的是,結合經驗,為大家總結了一些效能優化的模式, 例如CPU利用率高的時候需要怎麼進行優化,這些模式讓人受益匪淺,相信讀過後能對大家8常工作中做效能優化提供不小的幫助。
如何領取?一鍵三連,掃碼即可~