旁邊的同事突然晉升阿里P7,只因偷偷學習了這份JVM筆記?
大家都是有經驗的Java開發人員,想想為何要學習JVM? [面試?調優?裝逼? ]
不管出於何種原因,總之你得先學好。那怎麼學好呢?
每個人對於JVM的瞭解可能不一樣,這就要考慮到怎麼切入
既然大家都學習過Java,那不妨就從Java開始聊起,同時也是掃盲,畢竟不是每個小夥伴都是計算機專業
優秀的Java開發者
什麼是Java?
編程語言
計算機[硬件]能夠懂的語言
So JM是什麼?
JDK JRE JyM
Java源碼文件 ——> javac編譯器 ——> Class文件 ——> Java Virtual Machine
源碼到類文件
類文件到虛擬機(類加載機制)
運行時數據區(Run -Time Data Areas)
JVM內存模型
Garbage Collect (垃圾回收)
工欲善其事必先利其器
經過前面的各種分析學習,我們知道了關於JVM很多的知識,比如版本信息,類加載,堆,方法區,垃圾回收等,但是總覺得心裏不踏實,原因是沒看到實際的一些東西。
這一節主要聊一聊關於怎麼將這些內容進行直 觀地展示在我們面前,包括怎麼進行相應的一些設置。
JVM參數
常用命令
常用工具
執行引擎
重新認知JVM
性能優化
JVM的性能優化可以分為代碼層面和非代碼層面。
在代碼層面,大家可以結合字節碼指令進行優化,比如一個循環語句, 可以將循環不相關的代碼提取到循環體之外,這樣在字節碼層面就不需要重複執行這些代碼了。
在非代碼層面,一般情況可以從內存、gc以及cpu佔用率等方面進行優化。
注意,JVM調優是一個漫長和複雜的過程,而在很多情況下,JVM是不需要優化的,因為VM本身已經做了很多的內部優化操作。
那今天我們就從內存、gc以及cpu這3個方面和大家-起探討一下JVM的優化, 但是大家要注意的是不要為了調優和調優。
內存
GC
CFU佔用率高
JVM性能優化指南
常見問題