原创 JVM - 解讀GC中的 Safe Point & Safe Region

文章目錄Safe Point 安全點Safe Region 安全區域OopMap Safe Point 安全點 思考: 如上圖 GC的時候,是不是可以馬上GC,而不用去care用戶線程 ? 答案肯定是不行的。 HotSpot中

原创 JVM - 再聊GC垃圾收集算法及垃圾收集器

文章目錄Pre分代收集理論常見的垃圾收集算法標記-清除算法標記-複製算法標記-整理算法垃圾收集器Serial收集器Parallel Scavenge收集器 【JDK8默認】ParNew收集器CMS 【重點掌握】 Pre JVM

原创 JVM - 剖析Java對象頭Object Header之對象大小

文章目錄Pre總覽對象頭剖析查看對象內存的佔用情況對象頭C++源碼 註釋 Pre JVM - 寫了這麼多年代碼,你知不道new對象背後的邏輯? 中大體介紹了Java中 new 對象背後的主要流程,其中對象頭的部分,我們僅僅是點到

原创 JVM - CMS深度剖析

文章目錄Pre概述階段初始標記 (STW)併發標記 (用戶線程和GC線程並行工作)重新標記 (STW)併發清理(用戶線程和GC線程並行工作)併發重置concurrent mode failure 是怎麼回事兒CMS核心參數CMS的

原创 JVM - G1初探

文章目錄GC概述G1的內存分區G1回收垃圾的幾個階段初始標記 (initial mark,STW)併發標記(Concurrent Marking)最終標記(Remark,STW)篩選回收(Cleanup,STW)G1的特徵G1垃

原创 JVM - 剖析Java對象頭Object Header之指針壓縮

文章目錄Pre指針壓縮論證壓縮效果UseCompressedOops & UseCompressedClassPointers【指針壓縮】開啓 VS 關閉指針壓縮的目的爲什麼堆內存最好不要超過32G Pre JVM - 剖析J

原创 JVM - 寫了這麼多年代碼,你還不知道new對象背後的邏輯?

文章目錄對象創建流程【類加載檢查】【分配內存】內存劃分的兩種方式解決分配內存併發問題的兩種方式【初始化】【設置對象頭】對象的組成對象頭的兩部分組成【執行init方法】總結一下 對象創建流程 我們知道JVM三大組成部分: 類加載

原创 JVM - ZGC初探

文章目錄PreZGC概述ZGC的目標參數不分代(暫時)ZGC的內存佈局NUMA-aware 非統一內存訪問自動感知ZGC的回收階段顏色指針讀屏障ZGC觸發時機存在的問題[浮動垃圾]參考資料 Pre JVM - G1初探 ZG

原创 JVM-剖析對象內存分配流程

文章目錄Pre對象分配流程總覽流程分解棧上分配對象 (逃逸分析)Eden區分配對象-XX:+UseAdaptiveSizePolicy 默認開啓Eden區域分配對象Demo大對象直接進入老年代什麼是大對象?如何定義 “大”?作用的

原创 JVM-徹底搞懂 逃逸分析&標量替換

文章目錄Pre對象分配流程總覽逃逸分析所處的階段示例說明逃逸分析的含義逃逸分析的對象分配的方式【標量替換】標量替換的含義標量 VS 聚合量JVM 參數 -XX:+DoEscapeAnalysis & -XX:+Eliminat

原创 JVM - 應用JVM核心參數推薦設置

文章目錄PreJDK版本核心參數堆線程棧方法區(元空間)棧溢出案例 StackOverflowError Pre JVM-08垃圾收集Garbage Collection【GC常用參數】 JDK版本 = 1.8 核心參

原创 MyBatis源碼-深入理解MyBatis Executor的設計思想

文章目錄PreJDBC的執行過程JDBC DemoJDBC Statement 接口MyBatis執行過程四大組件組件之間的關係Executor 執行器組件架構總覽接口繼承關係 Pre 如果MyBatis的基礎用法還不熟悉,

原创 JVM - 結合代碼示例徹底搞懂Java內存區域_對象在堆-棧-方法區(元空間)之間的關係

文章目錄Pre示例demo總體關係代碼示例論證反彙編 Pre JVM - 結合代碼示例徹底搞懂Java內存區域_線程棧 | 本地方法棧 | 程序計數器 中我們探討了線程棧中的內部結構 ,大家有麼有想過main方法呢? 我們繼續來

原创 Java - 手擼線上故障 OOM + CPU居高不下

文章目錄Pre常見故障OOMjmap Java 內存映射工具概述語法及使用jhat 虛擬機堆轉儲快照分析工具概述語法及使用MATCPU居高不下傳統步驟jstack Java堆棧跟蹤工具概述語法及使用線上分析工具高階工具 Arth

原创 JVM - 結合代碼示例徹底搞懂Java內存區域_線程棧 | 本地方法棧 | 程序計數器

文章目錄Pre運行時數據區總覽線程棧概要棧內部主要組成部分局部變量操作數棧動態鏈接方法出口小結程序計數器本地方法棧附測試demojavapJVM字節碼指令集手冊 Pre JVM-01Java內存區域與內存溢出異常(上)【運行時區