深入理解Java虛擬機第三版,通俗易懂,大牛帶你輕鬆搞懂JVM性能調優

前言

Java是目前用戶最多、使用範圍最廣的軟件開發技術,Java的技術體系主要由支撐Java程序運行的虛擬機、提供各開發領域接口支持的Java類庫、Java編程語言及許許多多的第三E方Java框架(如Spring、 MyBatis等) 構成。在國內,有關Java類庫API、Java語言語法及第三方框架的技術資料和書籍非常豐富,相比而言,有關Java虛擬機的資料卻顯得異常貧乏。

隨着Java技術的不斷髮展,它已被應用於越來越多的領域之中。其中一些領域,如互聯網、能源、金融、通信等,對程序的性能、穩定性和擴展性方面會有極高的要求。一-段程序很可能在10個人同時使用時完全正常,但是在10000個人同時使用時就會緩慢、死鎖甚至崩潰。毫無疑問,要滿足10000個人同時使用,需要更高性能的物理硬件,但是在絕大多數情況下,提升硬件性能無法等比例提升程序的運行性能和併發能力,甚至有可能對程序運行狀況沒有任何改善。這裏面有Java虛擬機的原因:爲了達到「所有硬件提供一致的虛擬平臺」的目的,犧牲了- -些硬件相關的性能特性。更重要的是人爲原因:如果開發人員不瞭解虛擬機諸多技術特性的運行原理,就無法寫出最適合虛擬機運行和自優化的代碼。

讓我們一起走進虛擬機的世界吧!

添加VX:tkzl6666 免費獲取《深入理解Java虛擬機第三版》文檔資料

一、走進Java

世界上並沒有完美的程序,但我們並不因此而沮喪,因爲寫程序本來就是一個不斷追求完美的過程。

1.1概述

1.2 Java技術體系

1.3 Java發展史

1.4 Java虛擬機家族

1.5展望J ava技術的未來

1.6實戰:自己編譯JDK

1.7本章小結

阿里P8寫出的2020最新版《深入理解Java虛擬機3》輕鬆學會JVM底層

 

阿里P8寫出的2020最新版《深入理解Java虛擬機3》輕鬆學會JVM底層

 

二、自動內存管理

Java與C+ +之間有一堵由內存動態分配和垃圾收集技術所圍成的高牆,牆外面的人想進去,牆裏面的人卻想出來。

第2章Java內存區域與內存溢出異常

2.1概述

2.2運行時數據區域

2.3 HotSpot虛擬機對象探祕

2. 4實戰: 0utOfMem oryErr or異常

2.5本章小結

阿里P8寫出的2020最新版《深入理解Java虛擬機3》輕鬆學會JVM底層

 

第3章垃圾收集器與內存分配策略

3.1概述

3.2對象已死?

3.3垃圾收集算法

3.4 HotSp ot的算法細節實現

3.5經典垃圾收集器

3.6低延遲垃圾收集器

3.7選擇合適的垃圾收集器

3.8實戰:內存分配與回收策略

3.9小結

阿里P8寫出的2020最新版《深入理解Java虛擬機3》輕鬆學會JVM底層

 

第4章虛擬機性能監控、故障處理工具

4.1概述

4.2基礎故障處理工具

4.3可視化故障處理工具

4.4 HotSpot虛擬機插件及工具

4.5本章小結

阿里P8寫出的2020最新版《深入理解Java虛擬機3》輕鬆學會JVM底層

 

第5章調優案例分析與實戰

5.1概述

5.2案例分析

5.3實戰: Eclipse運行速度調優

5.4本章小結

阿里P8寫出的2020最新版《深入理解Java虛擬機3》輕鬆學會JVM底層

 

三、虛擬機執行子系統

代碼編譯的結果從本地機器碼轉變爲字節碼,是存儲格式發展的一-小步,卻是編程語言發展的一大步。

第6章:類文件結構

6.1概述

6.2無關性的基石

6.3 Class類文件的結構

6.4字節碼指令簡介

6.5公有設計,私有實現

6.6 Class文件結構的發展

6.7本章小結

阿里P8寫出的2020最新版《深入理解Java虛擬機3》輕鬆學會JVM底層

 

第7章:虛擬機類加載機制

7. 1概述

7.2類加載的時機

7.3類加載的過程

7.4類加載器

7.5 Java模塊化系統

7.6本章小結

阿里P8寫出的2020最新版《深入理解Java虛擬機3》輕鬆學會JVM底層

 

第8章:虛擬機字節碼執行引擎

8.1概述

8.2運行時棧幀結構

8.3方法調用

8.4動態類型語言支持

8.5基於棧的字節碼解釋執行引擎

8.6本章小結

阿里P8寫出的2020最新版《深入理解Java虛擬機3》輕鬆學會JVM底層

 

第9章:類加載及執行子系統的案例與實戰

9.1概述

9.2案例分析

9.3實戰:自己動手實現遠程執行功能

9.4本章小結

四、程序編譯與代碼優化

從計算機程序出現的第一天起, 對效率的追逐就是程序員天生的堅定信仰,這個過程猶如一場沒有終點、永不停歇的F1方程式競賽,程序員是車手,技術平臺則是在賽道上飛馳的賽車。

第10章:前端編譯與優化

10. 1概述

10.2 Javac編譯器

10.3 Java語法糖的味道

10. 4實戰:插入式註解處理器

10. 5本章小結

阿里P8寫出的2020最新版《深入理解Java虛擬機3》輕鬆學會JVM底層

 

第11章:後端編譯與優化

11. 1概述

11.2即時編譯器

11.3提前編譯器

11.4編譯器優化技術

11.5實戰:深入理解Gr aal編譯器

11.6本章小結

阿里P8寫出的2020最新版《深入理解Java虛擬機3》輕鬆學會JVM底層

 

五、高效併發

第12章:Java內存模型與線程

併發處理的廣泛應用是AmdahI定律代替摩爾定律成爲計算機性能發展源動力的根本原因,也是人類壓榨計算機運算能力的最有力武器。

12.1概述

12.2硬件的效率與一致性

12.3 Java內存模型

12. 4 Java與線程

12.5 Java與協程

12.6本章小結

阿里P8寫出的2020最新版《深入理解Java虛擬機3》輕鬆學會JVM底層

 

第13章:線程安全與 鎖優化

我們瞭解虛擬機Java內存模型的結構及操作,並且講解了原子性、可見性、有序性在Java內存模型中的體現,介紹了先行發生原則的規則及使用。另外,我們還了解了線程在Java語言之中是如何實現的,以及代表Java未來多線程發展的新併發模型的工作原理。

關於「高效併發"這個話題,在本章中主要介紹了虛擬機如何實現「併發」在下一章中,我們的主要關注點將是虛擬機如何實現"高效」,以及虛擬機對我們編寫的併發代碼提供了什麼樣的優化手段。

13.1概述

13.2線程安全

13.3鎖優化

13.4本章小結

阿里P8寫出的2020最新版《深入理解Java虛擬機3》輕鬆學會JVM底層