JVM從入門到精通

尚硅谷_宋紅康_JVM從入門到精通: https://www.bilibili.com/video/BV1PJ411n7xZ?from=search&seid=12508719405042682431

jvm(java虛擬機):一次編譯到處運行,自動的管理內存,自動垃圾回收,降低內存泄漏的概率

建議書籍:

在這裏插入圖片描述

P1 01-JVM內存與垃圾回收篇概述
P2 02-如何看待Java上層技術與JVM
P3 03-爲什麼要學習JVM
P4 04-面向人羣和課程特點

P5 05-官方規範下載與參考書目

在這裏插入圖片描述

P6 06-跨平臺的語言Java和跨語言的平臺JVM(java虛擬機)

java 因爲有jvm 成了跨平臺的語言
jvm(java虛擬機): 一個抽象的計算機
在這裏插入圖片描述

除了java以外可以使用jvm(java虛擬機)
jvm : 跨語言的平臺
在這裏插入圖片描述

在這裏插入圖片描述

P7 07-字節碼與多語言混合編程

  • 字節碼:
    在這裏插入圖片描述
  • 多語言混合編程:
    在這裏插入圖片描述

P8 08-Java及JVM歷史上的重大事件

在這裏插入圖片描述

P9 09-虛擬機與Java虛擬機介紹

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

P10 10-JVM的位置

  • JVM的位置:
    在這裏插入圖片描述

P11 11-JVM的整體結構

  • JVM的整體結構
    在這裏插入圖片描述

P12 12-Java代碼執行流程

  • Java代碼執行流程
    在這裏插入圖片描述

P13 13-區分棧的指令集架構和寄存器的指令集架構

在這裏插入圖片描述

P14 14-JVM的生命週期

  • JVM的生命週期![在這裏插入圖片描述
    在這裏插入圖片描述

P15 15-SUN Classic VM的介紹
P16 16-Exact VM的介紹

P17 17-HotSpot VM的介紹

在這裏插入圖片描述

P18 18-JRockit VM的介紹 P19 19-IBM J9 VM的介紹 P20 20-KVM、CDC、CLDC的介紹 P21 21-Azul VM和BEA Liquid VM的介紹 P22 22-Apache Harmony的介紹 P23 23-Microsoft JVM和TaobaoJVM P24 24-Dalvik VM及其他虛擬機的介紹 P25 25-Graal VM的介紹 P26 26-內存結構概述 P27 27-概述類的加載器及類加載過程 P28 28-類的加載過程一:Loading P29 29-類的加載過程二:Linking P30 30-類的加載過程三:Initialization P31 31-幾種類加載器的使用體會 P32 32-引導類、擴展類、系統類加載器的使用及演示 P33 33-爲什麼需要用戶自定義類加載器及具體實現 P34 34-ClassLoader的常用方法及獲取方法 P35 35-雙親委派機制的工作原理及演示 P36 36-雙親委派機制的優勢 P37 37-沙箱安全機制 P38 38-類的主動使用與被動使用等 P39 39-運行時數據區內部結構 P40 40-JVM中的線程說明 P41 41-PC寄存器概述 P42 42-PC寄存器的使用舉例 P43 43-解決PC寄存器兩個面試問題 P44 44-虛擬機棧的主要特點 P45 45-虛擬機棧的常見異常與如何設置棧大小 P46 46-棧的存儲結構和運行原理 P47 47-棧楨的內部結構 P48 48-局部變量表結構的認識 P49 49-字節碼中方法內部結構的剖析 P50 50-變量槽slot的理解與演示 P51 51-靜態變量與局部變量的對比及小結 P52 52-操作數棧的特點 P53 53-涉及操作數棧的字節碼指令執行分析 P54 54-棧頂緩存技術 P55 55-動態鏈接的理解與常量池的作用 P56 56-方法的綁定機制:靜態綁定與動態綁定 P57 57-4種方法調用指令區分非虛方法與虛方法 P58 58-invokedynamic指令的使用 P59 59-方法重寫的本質與虛方法表的使用 P60 60-方法返回地址的說明 P61 61-棧楨中的一些附加信息 P62 62-虛擬機棧的5道面試題 P63 63-本地方法接口的理解 P64 64-本地方法棧的理解 P65 65-JVM學習路線與內容回顧 P66 66-堆空間的概述_進程中堆的唯一性 P67 67-堆空間關於對象創建和和GC的概述 P68 68-堆的細分內存結構 P69 69-堆空間大小的設置和查看 P70 70-OOM的說明與舉例 P71 71-新生代與老年代中相關參數的設置 P72 72-圖解對象分配的一般過程 P73 73-對象分配的特殊情況 P74 74-代碼舉例與JVisualVM演示對象的分配過程 P75 75-常用優工具概述與Jprofiler的演示 P76 76-MinorGC、MajorGC和FullGC的對比 P77 77-GC舉例與日誌分析 P78 78-體會堆空間分代的思想 P79 79-總結內存分配策略 P80 80-堆空間爲每個線程分配的TLAB P81 81-小結堆空間的常用參數設置 P82 82-通過逃逸分析看堆空間的對象分配策略 P83 83-代碼優化之棧上分配 P84 84-代碼優化之同步省略 P85 85-代碼優化之標量替換 P86 86-代碼優化及堆的小結 P87 87-方法區概述_棧堆方法區間的交互關係 P88 88-方法區的基本理解 P89 89-Hotspot中方法區的演進 P90 90-設置方法區大小的參數 P91 91-OOM:PermGen和OOM:Metaspace舉例 P92 92-方法區的內部結構1 P93 93-方法區的內部結構2 P94 94-class文件中常量池的理解 P95 95-運行時常量池的理解 P96 96-圖示舉例方法區的使用 P97 97-方法區在jdk6、jdk7、jdk8中的演進細節 P98 98-StringTable爲什麼要調整位置 P99 99-如何證明靜態變量存在哪 P100 100-方法區的垃圾回收行爲 P101 101-運行時數據區的總結與常見大廠面試題說明 P102 102-對象實例化的幾種方式 P103 103-字節碼角度看對象的創建過程 P104 104-對象創建的六個步驟 P105 105-對象的內存佈局 P106 106-對象訪問定位 P107 107-直接內存的簡單體驗 P108 108-使用本地內存讀寫數據的測試 P109 109-直接內存的00M與內存大小的設置 P110 110-執行引擎的作用及工作過程概述 P111 111-Java程序的編譯和解釋運行的理解 P112 112-機器碼_指令_彙編_高級語言理解與執行過程 P113 113-解釋器的使用 P114 114-HotspotVM爲何解釋器與JIT編譯器並存 P115 115-熱點代碼探測確定何時JIT P116 116-Hotspot設置模式_C1與C2編譯器 P117 117-Graal編譯器與AOT編譯器 P118 118-String的不可變性 P119 119-String底層Hashtable結構的說明 P120 120-String內存結構的分配位置 P121 121-兩個案例熟悉String的基本操作 P122 122-字符串拼接操作的面試題講解 P123 123-字符串變量拼接操作的底層原理 P124 124-拼接操作與append操作的效率對比 P125 125-intern()的理解 P126 126-new String()到底創建了幾個對象 P127 127-關於intern()的面試難題 P128 128-面試的拓展問題 P129 129-intern()的課後練習1 P130 130-intern()的課後練習2 P131 131-intern()的空間效率測試 P132 132-StringTable的垃圾回收測試 P133 133-G1垃圾收集器的String去重操作 P134 134-垃圾回收相關章節的說明 P135 135-什麼是GC,爲什麼需要GC P136 136-瞭解早期垃圾回收行爲 P137 137-Java自動內存管理介紹 P138 138-垃圾回收相關算法概述 P139 139-引用計數算法的原理及優缺點 P140 140-Java代碼舉例_Python的引用計數實施方案 P141 141-可達性分析算法與GC Roots P142 142-對象的finalization機制 P143 143-代碼演示可復活的對象 P144 144-使用MAT查看GC Roots P145 145-使用JProfiler進行GC Roots溯源 P146 146-使用JProfiler分析OOM P147 147-標記-清除算法原理及優缺點 P148 148-複製算法原理及優缺點 P149 149-標記-壓縮算法原理及優缺點 P150 150-不同指標上對比三種算法 P151 151-分代收集算法的說明 P152 152-增量收集算法原理及優缺點 P153 153-分區算法的說明 P154 154-垃圾回收相關概念的概述 P155 155-System.gc()的理解 P156 156-手動gc理解不可達對象的回收行爲 P157 157-內存溢出的分析 P158 158-內存泄漏的分析 P159 159-StopTheWorld事件的理解 P160 160-程序的並行與併發 P161 161-垃圾回收的並行與併發 P162 162-安全點與安全區域的說明 P163 163-Java中幾種不同引用的概述 P164 164-強引用:不回收 P165 165-軟引用:內存不足即回收 P166 166-弱引用:發現即回收 P167 167-虛引用:對象回收跟蹤 P168 168-終結器引用的介紹 P169 169-垃圾回收器章節概覽 P170 170-垃圾回收器的分類 P171 171-GC性能指標的整體說明 P172 172-吞吐量與暫停時間的對比說明 P173 173-垃圾回收器的發展迭代史 P174 174-垃圾回收器的組合關係 P175 175-如何查看默認的垃圾回收器 P176 176-Serial與Serial Old垃圾回收器的介紹 P177 177-如何設置使用Serial垃圾回收器 P178 178-ParNew垃圾回收器的介紹 P179 179-如何設置使用ParNew垃圾回收器 P180 180-Parallel與Parallel Old垃圾回收器的介紹 P181 181-Parallel垃圾回收器的相關參數設置 P182 182-CMS垃圾回收器概述與工作原理 P183 183-CMS的特點與弊端分析 P184 184-CMS垃圾回收器的參數設置 P185 185-CMS的小結及後續JDK版本中的變化 P186 186-認識G1垃圾回收器 P187 187-G1垃圾回收器的優勢和不足 P188 188-G1的參數設置 P189 189-G1在生產環境的適用場景 P190 190-region的使用介紹 P191 191-G1垃圾回收器的主要回收環節 P192 192-記憶集與寫屏障 P193 193-G1垃圾回收過程的詳細說明 P194 194-G1垃圾回收的優化建議 P195 195-7種經典的垃圾回收器總結與調優建議 P196 196-常用的顯示GC日誌的參數 P197 197-GC日誌中垃圾回收數據的分析 P198 198-舉例說明日誌中堆空間數據如何解讀 P199 199-日誌分析工具的使用 P200 200-新時期的Epsilon和Shenandoah垃圾回收器 P201 201-革命性的ZGC的性能介紹 P202 202-其他的廠商的垃圾回收器