楠木軒

旁邊的同事突然晉升阿里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性能優化指南

常見問題