国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
JAVA性能優(yōu)化—IBM JDK JVM參數(shù)設(shè)置,Java系列教程,Java實(shí)例教程,Ja...
JAVA性能優(yōu)化—IBM JDK JVM參數(shù)設(shè)置
www.firnow.com    時間 : 2010-06-09  作者:匿名   編輯:壹枝雪糕 點(diǎn)擊:  357 [ 評論 ]
-
-
綜合 資源 電子書 社區(qū)   在前一篇中,說了對WebSphere優(yōu)化的關(guān)鍵點(diǎn)——因不同JDK而異。本文將描述IBM JDK下常用參數(shù)的設(shè)置。
-Xms:最小堆大小
-Xmx:最大堆大小
-Xminf and -Xmaxf:GC(垃圾回收)之后可用空間的最小值最大值
-Xmine and -Xmaxe:堆增長的最小最大值
-Xmint and -Xmaxt:垃圾回收占時間整個運(yùn)行時間的比例,默認(rèn)是5%。如果回收時間小于5%,那么它就縮減堆,反之增大。
如果使用大小可變的堆(比如,-Xms 和 -Xmx 不同),應(yīng)用程序可能遇到這樣的情況,不斷出現(xiàn)分配失敗而堆沒有擴(kuò)展。這就是堆失效,是由于堆的大小剛剛能夠避免擴(kuò)展但又不足以解決以后的分配失敗而造成的。通常,垃圾收集周期釋放的空間不僅可以滿足當(dāng)前的分配失敗,而且還有很多可供以后的分配請求使用的空間。但是,如果堆處于失效狀態(tài),那么每個垃圾收集周期釋放的空間剛剛能夠滿足當(dāng)前的分配失敗。結(jié)果,下一次分配請求時,又會進(jìn)入垃圾收集周期,依此類推。大量生存時間很短的對象也可能造成這種現(xiàn)象。避免這種循環(huán)的一種辦法是增加 -Xminf 和 -Xmaxf 的值。比方說,如果使用 -Xminf.5,堆將增長到至少有 50% 的自由空間。同樣,增加 -Xmaxf 也是很合理。如果 -Xminf等于0.5,-Xmaxf 為默認(rèn)值 0.6,因?yàn)?JVM 要把自由空間比例保持在 50% 和 60% 之間,所以就會出現(xiàn)太多的擴(kuò)展和收縮。兩者相差 0.3 是一個不錯的選擇,這樣 -Xmaxf.8 可以很好地匹配 -Xminf.5。 
如果記錄表明,需要多次擴(kuò)展才能達(dá)到穩(wěn)定的堆大小,但可以更改 -Xmine,根據(jù)應(yīng)用程序的行為來設(shè)置擴(kuò)展大小的最小值。目標(biāo)是獲得足夠的可用空間,不僅能滿足當(dāng)前的請求,而且能滿足以后的很多請求,從而避免過多的垃圾收集周期。-Xmine、-Xmaxf 和 -Xminf 為控制應(yīng)用程序的內(nèi)存使用特性提供了很大的靈活性。
摘自Java性能優(yōu)化的策略和常見方法
所以在應(yīng)用正式上線的頭一段時間,最好把GC日志打開,觀察一下堆(heap)的增長(expasion)和收縮(shrinkage)。最佳的情況就是,每次回收后可用的堆大小占整個堆的50%左右。如果回收后才騰出30%不到的可用空間,那就該再調(diào)整一下上述的參數(shù)了。下圖看起來直觀一點(diǎn),使用-verbose:size參數(shù)可以查看當(dāng)前的默認(rèn)值。
 
 
那為何不把Xms和Xmx設(shè)置成一樣大,就像SUN的JDK所推薦的那樣?

Using the same values is not usually a good idea, because it delays the start of garbage collection until the heap is full. The first time that the Garbage Collector runs, therefore, becomes a very expensive operation. Also, the heap is more likely to be fragmented and require a heap compaction. Again this is a very expensive operation. 
If the Garbage Collector cannot find enough garbage, it runs compaction. If the Garbage Collector finds enough garbage, or any of the other conditions for heap expansion are met , the Garbage Collector expands the heap.
因?yàn)镮BM JDK采用的是標(biāo)記(mark)-掃描(sweep)-標(biāo)記-……-掃描-緊湊排列(compact),如果還不能提供足夠的空間,擴(kuò)展堆(expasion)。依次循環(huán),直到達(dá)到最大堆大小。每次擴(kuò)展前,那些長存的對象就被調(diào)整到堆的底部,每次擴(kuò)展后需要再動的量就很少。所以如果把Xms設(shè)置成和Xmx一樣,那么掃描和緊湊排列這么一個充滿內(nèi)存碎片的大堆的開銷將大大高于從小擴(kuò)展堆的開銷。
The overheads of expanding the heap are almost trivial compared to the cost of collecting and compacting a very large fragmented heap.
這是由于IBM的GC特點(diǎn)造成的,而SUN的JDK采用的是分代回收的策略,所以就沒有這種情況,反而會受益于堆大小一致。不過這么說起來,用了-Xgcpolicy:gencon,就應(yīng)該把最小堆最大堆設(shè)置成一樣咯。
在Gencon回收策略下,可以通過-Xmn來設(shè)置嬰兒區(qū)域(Nursery或者叫young)的大小,通過-Xmo來設(shè)置長存區(qū)(tenured或者old)的大小。注意-Xmn不能和-Xmns/-Xmnx參數(shù)一起使用,-Xmo不能和-Xmos/-Xmox一起使用,否則會報錯。前者就是把年輕代和長存代的大小固定了,而后兩者就是設(shè)定兩個部分最大最小的范圍,默認(rèn)情況下:
-Xmns是-Xms的25%或者64M(在JDK 5.0中默認(rèn)是25%)
-Xmnx是-Xmx的25%或者64M(同上)
-Xmos是-Xmx減去-Xmns的大小
-Xmox是和-Xmx一樣大
可見默認(rèn)的年輕代太小了,生產(chǎn)環(huán)境中有必要改大一點(diǎn)。因?yàn)槟贻p代使用的是復(fù)制策略,所以回收速度相當(dāng)快(minor gc),而長存代使用的是和optavgpause 策略相似的方式進(jìn)行并發(fā)標(biāo)志、掃描策略,回收速度比較慢(major gc)。理想情況是minor gc和major gc的比值在1:10左右。(可以通過GC日志查看回收的區(qū)域)
gencon中年老期限(Tenure age)和傾斜比率(Tilt ratio)這兩個參數(shù)是JVM自己動態(tài)調(diào)整的。
針對固定對象問題(Pinned Objects),使用-Xk -Xp參數(shù)設(shè)定kCluster和pCluster,Avoiding Java heap fragmentation with Java SDK V1.4.2.
一些不常用的參數(shù):
-Xloainitial -Xloamaximum :調(diào)整大對象區(qū)域(Large Object Area)的大小。分配總是先在SOA(Small Object Area)中分配,如果沒有空間并且需要分配的大小大于64K,那么分配到LOA。默認(rèn)情況下為-Xloainitial0.05 (5%),-Xloamaximum0.5 (50%),如果你的程序確實(shí)需要分配許多大對象的話(大于64K),那么可以調(diào)整LOA的初始百分比。
總結(jié)一下來說,對于optthruput和optavgpause,設(shè)置恰當(dāng)?shù)淖畲蠖押妥钚《?,設(shè)置-Xk和-Xp避免碎片問題,如果程序需要分配大對象較多,那么調(diào)整一下LOA的大小;對于gencon,可以調(diào)大最小堆和最大堆接近,調(diào)整young區(qū)域的大小,LOA也可以視情況調(diào)整。subpool一般用不到,就不去研究了。
一些另外的信息
Default settings for the JVM
JVM environment settings
默認(rèn)的Heapdumps是關(guān)閉的,調(diào)試的時候記得打開;默認(rèn)的Javadumps on out of memory和Heapdumps on out of memory都是開啟的,但是默認(rèn)的dump位置是profile的所在目錄,最好在管理控制臺java進(jìn)程中把IBM_HEAPDUMPDIR和IBM_JAVACOREDIR設(shè)置到別的目錄,防止dump內(nèi)容把WAS的文件系統(tǒng)撐爆,影響正常業(yè)務(wù)使用。
在Windows機(jī)器上,如果內(nèi)存大于4G,記得開啟/3GB參數(shù),這樣可以使JVM Heap可以設(shè)置的更大一些,接近2G-1,(其它的三部分可以擴(kuò)展到另外的1G上去),但一般最大不超過1.7G。
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Tomcat 調(diào)優(yōu)及 JVM 參數(shù)優(yōu)化
JVM內(nèi)存模型以及垃圾收集策略解析【續(xù)】 - 信心,恒心,野心,愛心兼具者,可謂準(zhǔn)成功人士...
JVM優(yōu)化配置(轉(zhuǎn))
JVM參數(shù)查看與設(shè)置
J2EE性能分析篇】JVM參數(shù)對J2EE性能優(yōu)化的影響
Java虛擬機(jī)(JVM)中的內(nèi)存設(shè)置詳解
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服