JVM 調(diào)優(yōu)和 Java 優(yōu)化聽起來很相似,都旨在提高應(yīng)用程序性能。但他們采取完全不同的方法來實現(xiàn)他們的目標(biāo)。想學(xué)習(xí)java的同學(xué),建議參加java培訓(xùn),在專業(yè)老師和系統(tǒng)課程的帶領(lǐng)學(xué)習(xí)下,很快就能掌握了這部分的知識和技能。
JVM 調(diào)優(yōu)和 Java 優(yōu)化聽起來很相似,都旨在提高應(yīng)用程序性能。但是 JVM 調(diào)優(yōu)和 Java 優(yōu)化這兩個術(shù)語經(jīng)常互換使用,但兩種做法之間存在重要區(qū)別。簡而言之,JVM 調(diào)優(yōu)需要在吞吐量和響應(yīng)時間等指標(biāo)之間進行權(quán)衡。同時,Java 優(yōu)化在成功實施后會整體改進系統(tǒng)。
Java 虛擬機 (JVM) 調(diào)優(yōu)需要穩(wěn)定的內(nèi)存、處理器速度、網(wǎng)絡(luò)帶寬和托管應(yīng)用程序。該系統(tǒng)必須在關(guān)鍵績效指標(biāo) (KPI) 方面具有既定歷史。用戶必須有記錄的指標(biāo),例如吞吐量、延遲、響應(yīng)時間和每秒最大事務(wù)數(shù)。然后,JVM 或應(yīng)用程序調(diào)優(yōu)涉及對單個參數(shù)、配置或環(huán)境變量進行更改,然后量化更改對系統(tǒng)的影響。
在正確配置的 JVM 上,性能調(diào)優(yōu)通常涉及不同指標(biāo)之間的權(quán)衡。例如,當(dāng)你增加堆大小時,你會減少垃圾回收周期的數(shù)量。但這會增加 stop-the-world 停頓的長度。以類似的方式,增加應(yīng)用程序使用的線程數(shù)可能會增加爭用塊并導(dǎo)致死鎖。
在完全優(yōu)化的 Java 環(huán)境中,JVM 性能調(diào)優(yōu)不可避免地意味著以犧牲另一個指標(biāo)為代價來改進一個指標(biāo)。這是一場零和游戲,盡管某些配置將提供比其他配置更好的用戶體驗和資源利用率。參加java培訓(xùn)是入門學(xué)習(xí)的最佳選擇,有經(jīng)驗豐富的專業(yè)老師面授指導(dǎo)教學(xué),通過理論結(jié)合實戰(zhàn)的方式教授java基礎(chǔ)知識,幫助你更好的理解與運用java。
JVM 性能調(diào)優(yōu)例程的常見目標(biāo)包括:
最大堆大小
最小堆大小
元空間大小
垃圾收集類型
日志配置
同步策略
頁面大小
幸存者比率
字符串壓縮
當(dāng)你調(diào)整這些 JVM 調(diào)優(yōu)選項時,你會看到對各種 KPI 的影響,包括啟動速度、方法延遲、吞吐量、垃圾收集暫停時間、應(yīng)用程序抖動和每秒事務(wù)。調(diào)優(yōu)的目標(biāo)是在這些 KPI 之間取得最佳平衡。他們采取完全不同的方法來實現(xiàn)他們的目標(biāo)。
JVM 調(diào)優(yōu)與性能優(yōu)化
性能優(yōu)化不同于 JVM 調(diào)優(yōu)。
Java 優(yōu)化涉及識別性能不佳或行為不端的代碼、框架、庫、配置,甚至可能是硬件。一旦你將某個組件確定為優(yōu)化目標(biāo),你就可以對系統(tǒng)進行返工和重新測試。如果 Java 性能優(yōu)化目標(biāo)成功修復(fù),系統(tǒng)整體性能會更好,這里的指標(biāo)之間沒有任何權(quán)衡,完成 Java 性能優(yōu)化后,你的系統(tǒng)應(yīng)該會運行得更好。與 JVM 優(yōu)化不同,Java 性能優(yōu)化不是零和游戲。在java培訓(xùn)中,會有關(guān)于Java 性能優(yōu)化的相關(guān)知識的講解,感興趣的同學(xué)可以報名學(xué)習(xí)了解一下。
Java性能優(yōu)化步驟
優(yōu)化通常涉及以下步驟:
識別一個可能表現(xiàn)不佳的組件。
使用 Java Flight Recorder 或 VisualVM 等 JVM 分析工具獲取運行時指標(biāo)。
對已識別的組件進行更改,直到其性能提高。
使用優(yōu)化的 Java 組件重新部署應(yīng)用程序。
Java 優(yōu)化目標(biāo)
有多種方法可以優(yōu)化 Java 性能。一種常見的方法是消除應(yīng)用程序瓶頸。為此,請按照下列步驟操作:
使用最合適的集合類。
刪除糟糕的編程實踐,如原始類型自動裝箱。
減少從 Hibernate 和 JDBC 數(shù)據(jù)庫調(diào)用返回的數(shù)據(jù)。
消除導(dǎo)致線程阻塞和死鎖的同步方法。
消除導(dǎo)致 Java 內(nèi)存泄漏的開發(fā)實踐。
JVM 調(diào)優(yōu)和 Java 性能優(yōu)化是應(yīng)用程序生命周期中的重要活動,它們最大限度地提高應(yīng)用程序性能并增加本地硬件或云計算資源的吞吐能力,它們應(yīng)該是組織 DevOps 戰(zhàn)略的關(guān)鍵部分。參加java培訓(xùn),可以學(xué)到全方位的java知識和技能,而且還有實戰(zhàn)項目操作訓(xùn)練,積累項目經(jīng)驗,以便快速上崗。