【JAVA進階架構師指南】之五:JVM效能調優
阿新 • • 發佈:2020-06-13
## 前言
首先給大家說聲對不起,最近屬實太忙了,白天上班,晚上加班,回家還要收拾家裡,基本每天做完所有事兒都是凌晨一兩點了,沒有精力再搞其他的了.
好了,進入正題,讓我們來聊聊JVM篇最後一個章節----JVM效能調優.童鞋們隨便開啟一個大廠的招聘崗位JD,應該都會有JVM調優相關的描述,其實招聘方不一定要求候選人真的對JVM調優有實際調優經驗,但是至少得有思路,知道應該怎樣進行JVM層面的效能調優,說實話,知道如何進行JVM層面的效能調優的人,在面試中確實是有加分的.
筆者在公司擔任面試官的時候,經常會看到候選人簡歷描述有JVM效能調優經驗,每當這個時候我都會問候選人一個問題,你是如何進行JVM效能調優的,很多童鞋的回答就是:噢,就是調整一下初始堆大小,新生代大小.這明顯不是筆者想要的答案,因為這根本就不叫JVM效能調優.童鞋們對號入座一下,對JVM調優僅僅是我上述說的那樣的,趕緊改一下簡歷,不要說自己會JVM效能調優.說實話,對JVM進行效能調優是對架構師的要求,甚至我敢說很多架構師都不一定有實際的JVM效能調優經驗.話不多說,讓我們進入正題,我們將從以下幾點來講解如何進行效能調優:
+ JVM效能調優的前提
+ JVM效能調優的預備知識
+ STW現象--Stop-The-World
+ 垃圾回收器的種類
+ 效能調優的目的
+ 如何進行效能調優
## JVM效能調優的前提
所有有經驗的架構師一定會有一個共識,JVM層面的效能調優一定是作為最後的調優手段,在此之前,一定要確保系統其它方面都已經做到了極致,無法再進行調優了,在這個前提下,才會考慮JVM效能調優.這裡的其他方面包括從前端到架構到程式碼層面,我舉一些例子
從瀏覽器/APP角度可進行的優化有:
+ 減少HTTP請求次數.
+ 使用客戶端快取.
+ 瀏覽器啟用壓縮
+ 使用CDN加速
+ 動態資源和靜態資源分離
從系統層面可進行的優化有:
+ 啟用快取,比如redis快取資料
+ 使用叢集
+ 非同步處理,比如引入訊息佇列
+ 對程式碼的優化
以上列出的每一點,都能單獨拎出來講很久,但是博文篇幅問題,就不細說了,有興趣的童鞋可以自行下去了解,我們只著重說一下程式碼優化,相信大家都知道,業界比較公認的編碼規範是阿里巴巴