JVM調優
- 概念
- 基本垃圾回收算法
- 垃圾回收面臨的問題
- 分代垃圾回收詳述1
- 分代垃圾回收詳述2
- 典型配置舉例1
- 典型配置舉例2
- 新一代的垃圾回收算法
- 調優方法
- 反思
什麼是JVM?
在互聯網行業,JVM毫無疑問已經是最熱門的技術之一
JVM是Java Virtual Machine(Java 虛擬機)的縮寫,JVM是一種用於計算設備的規範,它是一個虛構出來的計算機,是通過在實際的計算機上仿真模擬各種計算機功能來實現的。
Java語言的一個非常重要的特點就是平臺無關性。而使用Java虛擬機是實現這一特點的關鍵。一般的高級語言如果要在不同的平臺上運行,至少需要編譯成不同的目標代碼。而引入Java語言虛擬機後,Java語言在不同平臺上運行時不需要重新編譯。Java語言使用Java虛擬機屏蔽了與具體平臺相關的信息,使得Java語言編譯程序只需生成在Java虛擬機上運行的目標代碼(字節碼),就可以在多種平臺上不加修改地運行。Java虛擬機在執行字節碼時,把字節碼解釋成具體平臺上的機器指令執行。這就是Java的能夠“一次編譯,到處運行”的原因。
JVM有哪些特性?
1、移植性
無論是GC還是Hotspot都可以用在任何Java可用的地方。比方說,JRuby可以運行在其他平臺上,Rails應用就可以運行在IBM主機上的JRuby上,而且這臺IBM主機運行的是CP/CMS.實際上,由於Java和OpenJDK項目的開源,我們正在看到越來越多的平臺的衍生,因此JVM的移植性也將越來越棒。
2、成熟
JVM已有多年的歷史,在過去的這些年裡,許多開發者為它做出了許多貢獻,使得它的性能一次又一次地提升,讓JVM變得更加穩定、快速和廣泛。
3、覆蓋面
JRuby和JVM上的其他語言項目已經被承認,一個例子是invokedynamic specification(akaJSR292)。JSR越來越配合新的語言,JVM已不再是Java一個人定製規則。JVM正在構建成為類如JRuby等項目的優良平臺。還有一個MLVM(multiple languageVM)項目,好比是新特性的清算機構,是一個許多企業應用的開發者試圖添加應用的地方,而這些應用正是他們想在JVM中看到的。而且JVM開發者互相協作、彼此影響,無疑這有利於JVM新特性的誕生。這些細節都可以看到JVM正在關注開發者的需求,擴大他的覆蓋面。
關注後留意私信回覆【架構書籍】即可免費領取史上最全JVM實戰文檔
JVM內存區域劃分
1.程序計數器(線程私有)
2Java棧(線程私有)
3.本地方法棧(線程私有)
4.堆(線程共享)
5.方法區(線程共享)
6.直接內存(線程共享)
JVM執行子系統
1.Class類文件結構
- 1.1 Java跨平臺的基礎
- 1.2 Class類的本質
2.字節碼指令
- 2.1加載和存儲指令
- 2.2運算或算術指令
- 2.3類型轉換指令
- 2.4創建類實例的指令:
- 2.5創建數組的指令:
- 2.6訪問字段指令:
- 2.7數組存取相關指令
- 2.8檢查類實例類型的指令:
- 2.9操作數據管理指令
- 2.10控制轉移指令
- 2.11方法調用指令
- 2.12方法返回指令
- 2.13異常處理指令
- 2.14同步指令
3.類加載機制
4.類加載器
- 4.1系統的類加載器
- 4.2雙親委派模型
5.Tomcat類加載機制
6.方法調用詳解
- 6.1解析
- 6.2靜態分派
- 6.3動態分派
- 6.4基於棧的字節碼解釋執行引擎
垃圾回收器和內存分配策略
1.Java中是值傳遞還是引用傳遞?
2.引用類型
3.基本垃圾回收算法
- 3.1按照基本回收策略分
- 3.2按分區對待的方式分
- 3.3按系統線程分
4.分代處理垃圾
5.JAVA中垃圾回收GC的類型
編寫高效優雅Java程序
1、面向對象
- 1.1構造器參數太多怎麼辦?
- 1.2不需要實例化的類應該構造器私有
- 1.3不要創建不必要的對象
- 1.4避免使用終結方法
- 1.5使類和成員的可訪問性最小化
- 1.6使可變性最小化
- 1.7複合優先於繼承
- 1.8接口優於抽象類
2.方法
- 2.1可變參數要謹慎使用
- 2.2返回零長度的數組或集合,不要返回null
- 2.3優先使用標準的異常
3.通用程序設計
關注後私信回覆【架構書籍】即可免費領取史上最全JVM實戰文檔
性能優化
1、常用的性能評價測試指標
1.1響應時間
1.2併發數
1.3吞吐量
2、常用的性能優化手段
2.1避免過早優化
2.2進行系統性能測試
2.3尋找系統瓶頸,分而治之,逐步優化
2.4前端優化常用手段
- 2.4.1瀏覽器/App
- 2.4.2 CDN加速
- 2.4.3反向代理緩存
- 2.4.4 WEB組件分離
3、應用服務性能優化
3.1緩存
- 3.1.1緩存的基本原理和本質
- 3.1.2合理使用緩衝的準則
- 3.1.3分佈式緩存與一致性哈希
3.2異步
- 3.2.1同步和異步,阻塞和非阻塞
- 3.2.2常見異步的手段
3.3集群
3.4應用相關
- 3.4.1代碼級別
- 3.4.2併發編程
- 3.4.3資源的複用
- 3.4.4 JVM
- 3.4.5 GC調優
- 3.4.6調優實戰
- 3.4.7存儲性能優化
關注後私信回覆【架構書籍】即可免費領取史上最全JVM實戰文檔
第一部分
第二部分
第三部分
第四部分
第五部分
總目錄
關注後私信回覆【架構書籍】即可免費領取史上最全JVM實戰文檔
閱讀更多 java架構 的文章