手機(jī)做圖片設(shè)計(jì)哪個(gè)軟件好湖南正規(guī)seo優(yōu)化
本文從幾種JVM垃圾回收方式及原理出發(fā),研究了在 SPEC jbb2015基準(zhǔn)測(cè)試中不同垃圾回收方式對(duì)于JVM 性能的影響,并通過(guò)最終測(cè)試數(shù)據(jù)對(duì)比,給出了不同應(yīng)用場(chǎng)景下如何選擇垃圾回收策略的方法。
目錄
4 垃圾回收器性能比較
4.1 測(cè)試結(jié)果
5 結(jié)語(yǔ)
4 垃圾回收器性能比較
最大性能指標(biāo) Max-jOPS 是系統(tǒng)最大每秒鐘處理的 Java 操作數(shù),可以看做在業(yè)務(wù)響應(yīng)不失敗的情況下,服務(wù)器的極限吞吐量,反映的是系統(tǒng)極限 Java 應(yīng)用性能。關(guān)鍵性能指標(biāo) Critical-jOPS 是系統(tǒng)在 5 個(gè)關(guān)鍵 SLA(服務(wù)水平協(xié)議)10ms, 25ms,50ms,75ms 和 100ms 響應(yīng)時(shí)間下平均每秒 Java 操作數(shù)。
4.1 測(cè)試結(jié)果
測(cè)試環(huán)境選擇使用四路服務(wù)器,配置 4 顆 Intel Xeon Platinum 8180 CPU,物理內(nèi)存大小為 1536G,操作系統(tǒng)為 Red Hat Enterprise Linux 7.6,使用 JDK 版本為 Oracle Java SE 13.0.2。
在此環(huán)境下分別使用:
1、-XX:+UseSerialGC(串行回收器)
2、-XX:+UseParallelOldGC(并行回收器)
3、-XX:+ UseConcMarkSweepGC(CMS 回收器)
4、- XX:+UseG1GC(G1 回收器 )
5、-XX:+UseZGC(ZGC)
運(yùn)行 SPEC jbb2015 測(cè)試,并使用參數(shù) -XX:+PrintGCDetails、-Xlog:gc. log 輸出垃圾回收詳細(xì)日志。
圖 1 反映了幾種垃圾回收器在 SPEC jbb2015 基準(zhǔn)測(cè)試中的性能表現(xiàn),可以看出在極限性能指標(biāo) Max-jOPS 上,并行回收器 ParallelOldGC 表現(xiàn)最好,這是由于 Max-jOPS 代表系統(tǒng)極限吞吐量 而并行回收器在所有垃圾回收器中最側(cè)重于吞吐量,因此這一指標(biāo)明顯優(yōu)于其他垃圾回收器。而在關(guān)鍵性能指標(biāo)上,ZGC 的表現(xiàn)最好,證明在一些有特定響應(yīng)時(shí)間要求的業(yè)務(wù)場(chǎng)景下,其綜合性能最好。ZGC 由于低停頓時(shí)間的特性,每次垃圾回收停頓時(shí)間不會(huì)超 過(guò) 10ms,這要遠(yuǎn)遠(yuǎn)低于其他垃圾回收方式(見(jiàn)圖 2)。一般來(lái)說(shuō),停頓時(shí)間的減少但帶來(lái)的影響必然是吞吐量的降低,ZGC 垃圾回收處理工作都在與應(yīng)用線程并發(fā)執(zhí)行,同時(shí)也會(huì)不可避免地占用很多 CPU 并發(fā)工作導(dǎo)致吞吐量降低。但如果同時(shí)考慮低響應(yīng)時(shí)間與吞吐量情況下,ZGC 吞吐量降低的程度在可接受的范圍之內(nèi),但同時(shí)其停頓時(shí)間減少了一個(gè)量級(jí),因此其綜合性能表現(xiàn)更好。
圖 2 展示了幾種垃圾回收方式的平均停頓時(shí)間。
其中 ZGC 的停頓時(shí)間最短,看到 ZGC 雖然目標(biāo)定位在停頓時(shí)間不超過(guò) 10ms,但在實(shí)際測(cè)試時(shí) ZGC 平均停頓時(shí)間約為 2ms,要遠(yuǎn)遠(yuǎn)低于 10 毫秒的目標(biāo)。串行回收器的停頓時(shí)間最長(zhǎng),幾乎達(dá)到秒級(jí),這是由于串行回收器回收時(shí)只有單線程,因此停頓的時(shí)間要遠(yuǎn)遠(yuǎn)高于其他垃圾回收器,因此在實(shí)際業(yè)務(wù)模型中性能很差。而并行回收器、G1 回收器平均停頓時(shí)間相差不大,都在 100ms 上下,CMS 回收器則平均在 200ms 左右。
5 結(jié)語(yǔ)
本文簡(jiǎn)述了幾種常用的 JVM 垃圾回收方式及其原理,并利用業(yè)內(nèi)權(quán)威的 Java 應(yīng)用性能測(cè)試工具 SPEC jbb2015 測(cè)試了幾種垃圾回收方式的實(shí)際性能。因?yàn)?SPEC jbb2015 測(cè)試模型則具有廣泛 的代表性,所以對(duì)基于此項(xiàng)測(cè)試對(duì)垃圾回收的研究有助于開(kāi)發(fā)者在實(shí)際應(yīng)用中合理地對(duì)性能進(jìn)行調(diào)優(yōu)并解決性能問(wèn)題。
根據(jù)SPECjbb2015測(cè)試結(jié)果來(lái)看,當(dāng)側(cè)重于追求最大吞吐量,如基于Java的后臺(tái)計(jì)算型應(yīng)用、事務(wù)處理時(shí),并行垃圾回收器 ParallelOldGC 表現(xiàn)更好。如追求低停頓時(shí)間,快速響應(yīng)如互聯(lián)網(wǎng)應(yīng)用、web 前端等時(shí) ZGC 優(yōu)勢(shì)明顯,或者也可以使用 G1 垃圾回收器配 合 -XX:MaxGCPauseMillis 參數(shù)來(lái)限制最大垃圾回收停頓時(shí)間。且 ZGC 所支持的超大內(nèi)存也非常適合需要大量?jī)?nèi)存的應(yīng)用程序,比如大數(shù)據(jù)應(yīng)用程序。但由于實(shí)際業(yè)務(wù)性能考量標(biāo)準(zhǔn)不同,還需結(jié)合每種垃圾回收方式自身特點(diǎn),合理進(jìn)行選擇。