大屏可视化分配率是什么意思_什么是分配率?
大屏可視化分配率是什么意思
諸如“不可持續(xù)的分配率”和“您需要保持較低的分配率”之類(lèi)的短語(yǔ)似乎僅屬于Java Champions的詞匯表。 復(fù)雜,恐怖并被魔術(shù)光環(huán)包圍。
經(jīng)常發(fā)生的情況是,當(dāng)您更仔細(xì)地查看概念時(shí),魔術(shù)會(huì)隨著抽煙消失。 這篇文章試圖從提到的條款中刪除魔術(shù)。
什么是分配率?我為什么要關(guān)心?
分配率以每個(gè)時(shí)間單位分配的內(nèi)存量來(lái)衡量。 通常以MB /秒表示,但如果您愿意,可以每年使用PB。 這就是全部–沒(méi)有魔術(shù),只是您在一段時(shí)間內(nèi)在Java代碼中分配的內(nèi)存量。
但是,僅了解這一事實(shí)并不太有益。 如果您可以忍受我,我將指導(dǎo)您實(shí)際使用該概念。
面對(duì)高分配率可能會(huì)給您的應(yīng)用程序性能帶來(lái)麻煩。 從實(shí)際的角度來(lái)看, 垃圾收集已成為瓶頸,從而浮出水面。 從硬件的角度來(lái)看,即使是商用硬件也可以維持每個(gè)內(nèi)核數(shù)GB /秒的分配,因此,如果您的速率開(kāi)始不超過(guò)1 GB /秒/核,您可以放心,您的硬件實(shí)際上不會(huì)成為瓶頸。
因此,在關(guān)注GC時(shí),我們可以從一個(gè)在現(xiàn)實(shí)世界中也適用的類(lèi)比開(kāi)始-如果您創(chuàng)建很多東西,那么之后往往會(huì)面臨很多清理工作。 知道JVM是使用垃圾收集機(jī)制構(gòu)建的,因此需要研究分配速率如何更改GC暫停的頻率或持續(xù)時(shí)間。
衡量分配率
讓我們從分配率的測(cè)量開(kāi)始。 為此,我們通過(guò)為JVM指定-XX:+ PrintGCDetails -XX:+ PrintGCTimeStamps標(biāo)志來(lái)打開(kāi)GC日志記錄。 JVM現(xiàn)在以與以下代碼段類(lèi)似的方式開(kāi)始記錄GC暫停:
0.291: [GC (Allocation Failure) [PSYoungGen: 33280K->5088K(38400K)] 33280K->24360K(125952K), 0.0365286 secs] [Times: user=0.11 sys=0.02, real=0.04 secs] 0.446: [GC (Allocation Failure) [PSYoungGen: 38368K->5120K(71680K)] 57640K->46240K(159232K), 0.0456796 secs] [Times: user=0.15 sys=0.02, real=0.04 secs] 0.829: [GC (Allocation Failure) [PSYoungGen: 71680K->5120K(71680K)] 112800K->81912K(159232K), 0.0861795 secs] [Times: user=0.23 sys=0.03, real=0.09 secs]從上面的GC日志中, 我們可以將分配率計(jì)算為上一個(gè)收集完成后和下一個(gè)收集開(kāi)始之前的年輕代大小之間的差。 使用上面的示例,我們可以例如提取以下信息:
- JVM啟動(dòng)后的291 ms ,創(chuàng)建了33,280K 個(gè)對(duì)象。 第一個(gè)次要的GC事件清除了Young一代,此后,Young一代還剩下5,088K個(gè)對(duì)象。
- 發(fā)射后446毫秒,Young gen占用已增加到38,368K, 觸發(fā)了下一個(gè)GC,從而將Young Gen的占用減少到了5,120K 。
- 發(fā)射后829毫秒,Young gen大小為71,680K ,GC再次將其減小為5,120K 。
然后可以在下表中表示此數(shù)據(jù),將分配率計(jì)算為年輕入住率的增量:
| 第一GC | 291毫秒 | 33,280KB | 5,088KB | 33,280KB | 114MB /秒 |
| 第二GC | 446毫秒 | 38,368KB | 5,120KB | 33,280KB | 215MB /秒 |
| 第三GC | 829毫秒 | 71,680KB | 5,120KB | 66,560KB | 174MB /秒 |
| 總 | 829毫秒 | 不適用 | 不適用 | 133,120KB | 161MB /秒 |
有了這些信息,我們可以說(shuō)該特定軟件在測(cè)量期間的分配速率為161 MB /秒。
分析影響
現(xiàn)在,有了這些信息,我們就可以了解分配速率的變化如何通過(guò)增加或減少GC暫停的頻率來(lái)影響應(yīng)用程序吞吐量。 首先,您應(yīng)該注意到只有Minor GC暫停清潔Young Generation會(huì)受到影響。 GC暫停清理舊一代的頻率或持續(xù)時(shí)間不受分配率的直接影響,而受晉升率的直接影響,我們將在下一篇文章中介紹這一術(shù)語(yǔ)。
知道我們只能專(zhuān)注于次要GC暫停時(shí),我們接下來(lái)應(yīng)該查看Young Generation內(nèi)部的不同內(nèi)存池。 當(dāng)分配在Eden中進(jìn)行時(shí) ,我們可以立即查看Eden的大小如何影響分配率。 因此,我們可以有一個(gè)假設(shè),即增加Eden的大小將減少較小的GC暫停頻率,從而使應(yīng)用程序能夠維持更快的分配速率。
實(shí)際上,當(dāng)使用-XX:NewSize -XX:MaxNewSize和-XX:SurvivorRatio參數(shù)運(yùn)行具有不同Eden大小的相同示例時(shí),我們可以看到分配率有兩倍的差異
- 使用100M的Eden運(yùn)行上述示例,將分配速率降低到100MB / sec以下
- 將Eden大小增加到1GB,可以將分配速率增加到剛好低于200MB /秒。
如果您仍然想知道為什么這是正確的- 如果您不頻繁地停止GC的應(yīng)用程序線(xiàn)程,則可以做更多有用的工作。 還發(fā)生了更多有用的工作來(lái)創(chuàng)建更多對(duì)象,從而支持增加的分配率 。
現(xiàn)在,在得出“更大的伊甸園更好”的結(jié)論之前,您應(yīng)該注意到分配率可能并且可能與應(yīng)用程序的實(shí)際吞吐量沒(méi)有直接關(guān)系。 這是一項(xiàng)技術(shù)指標(biāo),有助于提高吞吐量。 分配率可能會(huì)并且會(huì)影響您的次要GC暫停停止應(yīng)用程序線(xiàn)程的頻率,但是要查看整體影響,您還需要考慮主要GC暫停并以應(yīng)用程序的業(yè)務(wù)操作(不是MB / sec)來(lái)衡量吞吐量。提供。
翻譯自: https://www.javacodegeeks.com/2015/09/what-is-allocation-rate.html
大屏可視化分配率是什么意思
總結(jié)
以上是生活随笔為你收集整理的大屏可视化分配率是什么意思_什么是分配率?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 腾讯电脑管家能杀毒吗(腾讯电脑管家能防病
- 下一篇: go语言 不支持动态加载_动态语言支持