老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

重慶分公司,新征程啟航

為企業提供網站建設、域名注冊、服務器等服務

怎樣通過優化JVM參數配置從而提升性能

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

讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業的熱愛。我們立志把好的技術通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領域值得信任、有價值的長期合作伙伴,公司提供的服務項目有:空間域名、虛擬空間、營銷軟件、網站建設、博興網站維護、網站推廣。

1 內存構成

年老代年輕代

Eden
S1
S2

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

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

2 回收策略

Java虛擬機的垃圾回收策略很復雜,這里我們只關心最影響性能的幾種情況。

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

簡述就是,Survivor區裝不下年輕代的幸存對象時,會造成年老代的增長,隨著年老代不斷增長,Full GC必然會被觸發。

3 sortx 時的內存使用

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

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

那么再不斷嘗試取小點,經過幾次嘗試后,會發現可以用了,不會溢出了。但這時不一定是最優取值,如果n取值占用的內存大于Eden,且正好把年老代占用的差不多了,則每次取出的數據都會送進年老代,等到下一次取數的時候,就觸發Full GC,而這種頻繁觸發是最耗時的。

所以,從Java的分配和回收策略來看,最理想的情況是,n的取值占用的內存,略小于Eden的大小。這是因為sortx這類運算的特點是“取出即用,用完就扔”,很少有對象會常駐內存。

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

4 內存分配

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

默認的情況下,各區比例大概是這樣的:

年輕代 : 年老代 = 3 : 7

Eden : S1 : S2 = 8 : 1 : 1

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

5 結論

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

驗證 n 值是否合適的辦法如下:

1 添加參數 -XX:+PrintGC。

2 運行 sortx。

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

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

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

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

6 調參

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

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

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

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

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

7 其它

參數的配置沒有一致的準則,需要根據計算的類型來調整,有時候年老代大一些好(比如大維表需要常駐內存的),有時候則是年輕代大一些好。

看完這篇文章,你們學會通過優化JVM參數配置從而提升性能了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注創新互聯行業資訊頻道,感謝各位的閱讀。


當前題目:怎樣通過優化JVM參數配置從而提升性能
網站路徑:http://www.xueling.net.cn/article/gdppdd.html

其他資訊

在線咨詢
服務熱線
服務熱線:028-86922220
TOP
主站蜘蛛池模板: 91欧美一区二区三区 | 国产免费av资源 | 婬荡少妇21P | 日韩三级一区二区三区 | 日日夜夜中文字幕 | 四川少妇被弄到高潮 | 国产高清免费av在线 | 澳门精品无码一区二区三区 | 国产v综合v亚洲欧美久久 | 国产激情午夜视频在线观看 | 久久99精品久久久久久久清纯 | 欧美性大战久久久久久久小说 | 日本毛片在线 | 年轻的朋友3中文 | 91在线视频?看免费 高清在线一区二区 | 新包青天1995国语版 | 国产精品视频久久久 | 日本a级无毛 | 日韩国产成人精品 | 给我免费的视频在线观看 | 天天天天噜在线视频 | 朝鲜女人大白屁股ass | AV无码精品一区二区三区 | 国内自拍视频网站 | 一级日b视频 | 91香草视频 | 玖玖综合色 | 天天综合网久久 | 国产精品怡红院在线观看 | 西西人体大胆扒开下部337卩 | 久久厕所国产精品嘘嘘 | 国内在线一区 | 欧美一级片在线观看 | 播放灌醉水嫩大学生国内精品 | 国产精品久久久影视青草 | 国产精品色区在线观看 | 亚洲理论在线a中文字幕 | 国产精品91一区二区 | 青青青草网站免费视频在线观看 | 二区影院 | 蜜臀av午夜一区二区三区 |