中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

怎樣通過優(yōu)化JVM參數(shù)配置從而提升性能-創(chuàng)新互聯(lián)

怎樣通過優(yōu)化JVM參數(shù)配置從而提升性能?針對這個問題,今天小編總結(jié)這篇有關(guān)sortx參數(shù)使用的文章,希望能幫助更多想解決這個問題的朋友找到更加簡單易行的辦法。

創(chuàng)新互聯(lián)公司自2013年創(chuàng)立以來,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元坊子做網(wǎng)站,已為上家服務(wù),為坊子各地企業(yè)和個人服務(wù),聯(lián)系電話:028-86922220

1 內(nèi)存構(gòu)成

年老代年輕代

Eden
S1
S2

如圖,Java虛擬機(jī)的內(nèi)存,也就是常說的堆,主要分為年輕代和年老代兩個部分。年輕代存放生命周期很短的對象,年老代存放長期存活的對象。例如,經(jīng)過幾次垃圾回收之后,一個對象仍然存活,那么這個對象就會從年輕代進(jìn)入年老代。

年輕代又分為3個區(qū):Eden、Survivor 1、Survivor 2(以下簡稱Eden、S1、S2)。Eden存放新對象,S1和S2交替使用,用來存放垃圾回收時存活的對象。

2 回收策略

Java虛擬機(jī)的垃圾回收策略很復(fù)雜,這里我們只關(guān)心最影響性能的幾種情況。

Java的垃圾回收分為兩種:Full GC和minor GC,前者是對年老代的回收,一般會很慢,后者是針對年輕代的回收,這個很快。我們調(diào)優(yōu)的目標(biāo)就是盡量避免頻繁的Full GC。那么什么情況會觸發(fā)Full GC呢?上面說了,新對象會存放在Eden區(qū),而當(dāng)Eden區(qū)滿了的時候就會觸發(fā)minor GC,此時Eden區(qū)的垃圾對象會被清除,而存活下來的有用對象則會往S1或S2區(qū)復(fù)制,從而完成一次回收過程。在這個過程中,如果S1或S2區(qū)裝不下Eden里幸存的對象了,就會把幸存的對象保存到年老代,而如果年老代也沒有空間了,就會觸發(fā)Full GC。

簡述就是,Survivor區(qū)裝不下年輕代的幸存對象時,會造成年老代的增長,隨著年老代不斷增長,F(xiàn)ull GC必然會被觸發(fā)。

3 sortx 時的內(nèi)存使用

我們知道sortx函數(shù)有個參數(shù)n,n是緩沖區(qū)條數(shù),表示每次從游標(biāo)中取出來的記錄條數(shù)。那么n取什么值最合適呢?

顯然n不能取值太大,否則會造成內(nèi)存溢出,根本無法使用。

那么再不斷嘗試取小點(diǎn),經(jīng)過幾次嘗試后,會發(fā)現(xiàn)可以用了,不會溢出了。但這時不一定是最優(yōu)取值,如果n取值占用的內(nèi)存大于Eden,且正好把年老代占用的差不多了,則每次取出的數(shù)據(jù)都會送進(jìn)年老代,等到下一次取數(shù)的時候,就觸發(fā)Full GC,而這種頻繁觸發(fā)是最耗時的。

所以,從Java的分配和回收策略來看,最理想的情況是,n的取值占用的內(nèi)存,略小于Eden的大小。這是因?yàn)閟ortx這類運(yùn)算的特點(diǎn)是“取出即用,用完就扔”,很少有對象會常駐內(nèi)存。

那么如何知道Eden區(qū)的大小然后估算n呢?

4 內(nèi)存分配

在 IDE 的啟動配置里可以看到,參數(shù) -Xmx 用來指定分配給 java 的堆內(nèi)存的大小。例如 -Xmx10g 就表示分配了 10G 內(nèi)存給 Java。那么 Java 如何把這 10G 分配給這幾個區(qū)呢?

默認(rèn)的情況下,各區(qū)比例大概是這樣的:

年輕代 : 年老代 = 3 : 7

Eden : S1 : S2 = 8 : 1 : 1

     有了比例,很容易算出來各區(qū)大小,年老代占 7G,年輕代占 3G,其中 Eden 占 2.4G,S1 和 S2 各占 0.3G。據(jù)說這個默認(rèn)比例是 jdk 的開發(fā)人員統(tǒng)計(jì)得出的,認(rèn)為在大部分應(yīng)用中,幸存對象占全部對象的 1/10。然而這個比例不一定適合所有情形,至少在 sortx 時就不太合適。

5 結(jié)論

n的取值原則:使用 sortx 時,在不溢出的前提下,n 的取值并不是越大越好,而是(根據(jù) Eden 大?。┕浪阋粋€合適值,這個值不引起頻繁 Full GC。

驗(yàn)證 n 值是否合適的辦法如下:

1 添加參數(shù) -XX:+PrintGC。

2 運(yùn)行 sortx。

3 觀察控制臺,如果頻繁出現(xiàn) [Full GC (Allocation Failure)……] 信息則調(diào)小 n,重試。

4 如果只出現(xiàn)很多 [GC (Allocation Failure)……] 信息,則認(rèn)為 n 的值是合適的。

5 如果出現(xiàn)很多 [GC (Allocation Failure)……] 信息的同時,偶爾出現(xiàn) [Full GC (Allocation Failure)……] 信息,則也可以認(rèn)為 n 的值是合適的。

6 確保臨時文件不能太小。

6 調(diào)參

一般來說通過調(diào)整n,就基本可以滿足sortx的性能了,如果還想進(jìn)一步追求性能,就需要調(diào)參了。默認(rèn)分配的年輕代只占堆的3/10,而年老代那7/10的內(nèi)存在sortx這種計(jì)算時顯得作用不大。如果想調(diào)整這個比例,又允許sortx使用一個專門的啟動配置,則可以使用參數(shù)-XX:NewSize進(jìn)行調(diào)整。

例如,-XX:NewSize=5g,就指定年輕代的大小是5G。

提示一下,調(diào)整的時候,年老代的空間也不能留的太少,占整個堆的1/5是合適的。這是因?yàn)镴ava的分配策略還有很多復(fù)雜情況,比如總空間夠但不連續(xù)時,仍會直接把對象裝入年老代。類似的情況還有一些,不再贅述。

同樣地,Eden和S1、S2的比例也會影響性能,如果想調(diào)整這個比例也可以使用參數(shù)-XX:SurvivorRatio。例如-XX:SurvivorRatio=1表示Eden:S1:S2 = 1:1:1。-XX:SurvivorRatio=8表示Eden:S1:S2 = 8:1:1。

一般來說,Survivor區(qū)越大,對象進(jìn)入老年代的概率就越小,所以在做sortx時,傾向于配置為-XX:SurvivorRatio=1。

7 其它

參數(shù)的配置沒有一致的準(zhǔn)則,需要根據(jù)計(jì)算的類型來調(diào)整,有時候年老代大一些好(比如大維表需要常駐內(nèi)存的),有時候則是年輕代大一些好。

看完這篇文章,你們學(xué)會通過優(yōu)化JVM參數(shù)配置從而提升性能了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

文章題目:怎樣通過優(yōu)化JVM參數(shù)配置從而提升性能-創(chuàng)新互聯(lián)
轉(zhuǎn)載來源:http://www.rwnh.cn/article40/hsgeo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站、網(wǎng)站設(shè)計(jì)、商城網(wǎng)站網(wǎng)站策劃、App開發(fā)、網(wǎng)站維護(hù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)
龙胜| 青田县| 子洲县| 莱芜市| 盱眙县| 玛纳斯县| 昭通市| 玉树县| 正宁县| 玛纳斯县| 阳朔县| 婺源县| 嘉定区| 冀州市| 漯河市| 定陶县| 闻喜县| 交口县| 河东区| 迭部县| 华池县| 曲松县| 晋宁县| 宜宾县| 鄂托克旗| 阿巴嘎旗| 镇原县| 文安县| 张家口市| 新河县| 黔南| 临澧县| 织金县| 黑龙江省| 垫江县| 湖南省| 西青区| 通海县| 香格里拉县| 太和县| 岑巩县|