1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時(shí)間:8:30-17:00
      你可能遇到了下面的問題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
      JVM參數(shù)調(diào)整對sortx的影響-創(chuàng)新互聯(lián)

      Java虛擬機(jī)參數(shù)的配置有時(shí)候會(huì)對SPL的性能產(chǎn)生很大影響,本文從排序函數(shù)sortx的使用出發(fā),探索如何通過優(yōu)化JVM參數(shù)配置來提升性能。對分析過程不感興趣的同學(xué)可以直接閱讀結(jié)論章節(jié)。

      成都創(chuàng)新互聯(lián)專注于企業(yè)全網(wǎng)營銷推廣、網(wǎng)站重做改版、潯陽網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、HTML5建站商城網(wǎng)站制作、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為潯陽等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

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

      年老代年輕代

      Eden
      S1
      S2

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

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

      2 回收策略

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

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

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

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

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

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

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

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

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

      4 內(nèi)存分配

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

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

      年輕代 : 年老代 = 3 : 7

      Eden : S1 : S2 = 8 : 1 : 1

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

      5 結(jié)論

      n的取值原則:使用 sortx 時(shí),在不溢出的前提下,n 的取值并不是越大越好,而是(根據(jù) Eden 大小)估算一個(gè)合適值,這個(gè)值不引起頻繁 Full GC。

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

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

      2 運(yùn)行 sortx。

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

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

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

      6 確保臨時(shí)文件不能太小。

      6 調(diào)參

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

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

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

      同樣地,Eden和S1、S2的比例也會(huì)影響性能,如果想調(diào)整這個(gè)比例也可以使用參數(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時(shí),傾向于配置為-XX:SurvivorRatio=1。

      7 其它

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


      分享題目:JVM參數(shù)調(diào)整對sortx的影響-創(chuàng)新互聯(lián)
      本文地址:http://www.ef60e0e.cn/article/docgge.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        理塘县| 邓州市| 辽阳县| 华池县| 武强县| 海原县| 繁昌县| 内江市| 娄底市| 长乐市| 唐海县| 调兵山市| 五莲县| 桐柏县| 治多县| 邵阳市| 化隆| 大石桥市| 库尔勒市| 岑巩县| 娄烦县| 太原市| 介休市| 乡城县| 台山市| 横峰县| 札达县| 乌拉特后旗| 镇宁| 唐河县| 永泰县| 江孜县| 凯里市| 闽侯县| 出国| 樟树市| 墨脱县| 华亭县| 宣化县| 临邑县| 米林县|