首先你應該知道,運行一個 Java 應用程序,咱們必需要先安裝 JDK 或者 JRE 包。這是由於 Java 應用在編譯後會變成字節碼,而後經過字節碼運行在 JVM 中,而 JVM 是 JRE 的核心組成部分。JVM 不只承擔了 Java 字節碼的分析(JIT compiler)和執行(Runtime),同時也內置了自動內存分配管理機制。這個機制能夠大大下降手動分配回收機制可能帶來的內存泄露和內存溢出風險,使 Java 開發人員不須要關注每一個對象的內存分配以及回收,從而更專一於業務自己。spring
JVM 在對代碼執行的優化可分爲運行時(runtime)優化和即時編譯器(JIT)優化。運行時優化主要是解釋執行和動態編譯通用的一些機制,好比說鎖機制(如偏斜鎖)、內存分配機制(如 TLAB)等。除此以外,還有一些專門用於優化解釋執行效率的,好比說模版解釋器、內聯緩存(inline cache,用於優化虛方法調用的動態綁定)。編程
JVM如此重要,咱們又怎麼能得過且過呢?前段時間找到了一份阿里架構師整理的JVM魔鬼文檔,真的是槓槓的!!!緩存
看內容
主要從四個部分逐步深刻,由淺入深!
springboot
01 什麼是Java
02 編程語言
03 計算機[硬件]可以懂的語言
04 So JVM是什麼?
05 JDK JRE JVM
JVM到底該學習什麼
01 源碼到類文件
02 類文件到虛擬機(類加載機制)
03 運行時數據區(Run-Time Data Areas)
04 JVM內存模型
05 Garbage Collect(垃圾回收)
性能優化
01 JVM參數
02 經常使用命令
03 經常使用工具
04 執行引擎
05 從新認知JVM
架構
01 內存
02 GC
03 CPU佔用率高
04 JVM性能優化指南
05 常見問題
附資料:
阿里架構大牛說:JVM從入門到入魔,就是這麼簡單!編程語言
上文中提到的阿里架構牛整理的JVM從入門到入魔筆記、分佈式事務實戰文檔、分佈式系統經常使用技術及案例分析、深刻淺出springboot等等均可免費分享原件PDF,須要請加QQ:3368213683 或Q羣:471467922,備註51。
分佈式