1. 程式人生 > >【JAVA進階架構師指南】之五:JVM效能調優

【JAVA進階架構師指南】之五:JVM效能調優

## 前言   首先給大家說聲對不起,最近屬實太忙了,白天上班,晚上加班,回家還要收拾家裡,基本每天做完所有事兒都是凌晨一兩點了,沒有精力再搞其他的了.   好了,進入正題,讓我們來聊聊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快取資料 + 使用叢集 + 非同步處理,比如引入訊息佇列 + 對程式碼的優化   以上列出的每一點,都能單獨拎出來講很久,但是博文篇幅問題,就不細說了,有興趣的童鞋可以自行下去了解,我們只著重說一下程式碼優化,相信大家都知道,業界比較公認的編碼規範是阿里巴巴