成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

詳解JVM參數配置技巧

開發 后端
JVM參數配置你是否了解,這里和大家分享一下,主要包括heapsize,garbagecollector等幾部分內容,相信本文介紹一定會讓你有所收獲。

這里向大家描述一下JVM參數配置的具體步驟,比如heapsize的配置,-Xms<n>指定jvm的最小heap大小,如:-Xms=2g,高并發應用,建議和-Xmx一樣,防止因為內存收縮/突然增大帶來的性能影響。

JVM參數配置詳解

1:JVM參數配置之heapsize

a:-Xmx<n>
指定jvm的最大heap大小,如:-Xmx=2g

b:-Xms<n>
指定jvm的最小heap大小,如:-Xms=2g,高并發應用,建議和-Xmx一樣,防止因為內存收縮/突然增大帶來的性能影響。

c:-Xmn<n>
指定jvm中NewGeneration的大小,如:-Xmn256m。這個參數很影響性能,如果你的程序需要比較多的臨時內存,建議設置到512M,如果用的少,盡量降低這個數值,一般來說128/256足以使用了。

d:-XX:PermSize=<n>
指定jvm中PermGeneration的最小值,如:-XX:PermSize=32m。這個參數需要看你的實際情況,。可以通過jmap命令看看到底需要多少。

e:-XX:MaxPermSize=<n>
指定PermGeneration的最大值,如:-XX:MaxPermSize=64m

f:-Xss<n>
指定線程桟大小,如:-Xss128k,一般來說,webx框架下的應用需要256K。如果你的程序有大規模的遞歸行為,請考慮設置到512K/1M。這個需要全面的測試才能知道。不過,256K已經很大了。這個參數對性能的影響比較大的。

g:-XX:NewRatio=<n>
指定jvm中OldGenerationheapsize與NewGeneration的比例,在使用CMSGC的情況下此參數失效,如:-XX:NewRatio=2

h:-XX:SurvivorRatio=<n>
指定NewGeneration中EdenSpace與一個SurvivorSpace的heapsize比例,-XX:SurvivorRatio=8,那么在總共NewGeneration為10m的情況下,EdenSpace為8m

i:-XX:MinHeapFreeRatio=<n>
指定jvmheap在使用率小于n的情況下,heap進行收縮,Xmx==Xms的情況下無效,如:-XX:MinHeapFreeRatio=30

j:-XX:MaxHeapFreeRatio=<n>
指定jvmheap在使用率大于n的情況下,heap進行擴張,Xmx==Xms的情況下無效,如:-XX:MaxHeapFreeRatio=70

k:-XX:LargePageSizeInBytes=<n>
指定Javaheap的分頁頁面大小,如:-XX:LargePageSizeInBytes=128m#p#

2:JVM參數配置之garbagecollector

a:-XX:+UseParallelGC
指定在NewGeneration使用parallelcollector,并行收集,暫停appthreads,同時啟動多個垃圾回收thread,不能和CMSgc一起使用.系統噸吐量優先,但是會有較長長時間的apppause,后臺系統任務可以使用此gc

b:-XX:ParallelGCThreads=<n>
指定parallelcollection時啟動的thread個數,默認是物理processor的個數,

c:-XX:+UseParallelOldGC
指定在OldGeneration使用parallelcollector

d:-XX:+UseParNewGC
指定在NewGeneration使用parallelcollector,是UseParallelGC的gc的升級版本,有更好的性能或者優點,可以和CMSgc一起使用

e:-XX:+CMSParallelRemarkEnabled
在使用UseParNewGC的情況下,盡量減少mark的時間

f:-XX:+UseConcMarkSweepGC
指定在OldGeneration使用concurrentcmarksweepgc,gcthread和appthread并行(在init-mark和remark時pauseappthread).apppause時間較短,適合交互性強的系統,如webserver

g:-XX:+UseCMSCompactAtFullCollection
在使用concurrentgc的情況下,防止memoryfragmention,對liveobject進行整理,使memory碎片減少

h:-XX:CMSInitiatingOccupancyFraction=<n>
指示在oldgeneration在使用了n%的比例后,啟動concurrentcollector,默認值是68,如:-XX:CMSInitiatingOccupancyFraction=70
有個bug,在低版本(1.5.09andearly)的jvm上出現,http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6486089

i:-XX:+UseCMSInitiatingOccupancyOnly
指示只有在oldgeneration在使用了初始化的比例后concurrentcollector啟動收集#p#

3:JVM參數配置之其他

a:-XX:MaxTenuringThreshold=<n>
指定一個object在經歷了n次younggc后轉移到oldgeneration區,在linux64的java6下默認值是15,此參數對于throughputcollector無效,如:-XX:MaxTenuringThreshold=31

b:-XX:+DisableExplicitGC
禁止java程序中的fullgc,如System.gc()的調用.最好加上么,防止程序在代碼里誤用了。對性能造成沖擊。

c:-XX:+UseFastAccessorMethods
get,set方法轉成本地代碼

d:-XX:+PrintGCDetails
打應垃圾收集的情況如:
[GC15610.466:[ParNew:229689K->20221K(235968K),0.0194460secs]1159829K->953935K(2070976K),0.0196420secs]

e:-XX:+PrintGCTimeStamps
打應垃圾收集的時間情況,如:
[Times:user=0.09sys=0.00,real=0.02secs]

f:-XX:+PrintGCApplicationStoppedTime
打應垃圾收集時,系統的停頓時間,如:
Totaltimeforwhichapplicationthreadswerestopped:0.0225920seconds

4:awebserverproductsampleandprocess

  1. JAVA_OPTS="-server-Xmx2g-Xms2g-Xmn256m  
  2. -XX:PermSize=128m-Xss256k-XX:+DisableExplicitGC  
  3. -XX:+UseConcMarkSweepGC-XX:+UseParNewGC  
  4. -XX:+CMSParallelRemarkEnabled-XX:+UseCMSCompactAtFullCollection  
  5. -XX:LargePageSizeInBytes=128m-XX:+UseFastAccessorMethods  
  6. -XX:+UseCMSInitiatingOccupancyOnly
  7. -XX:CMSInitiatingOccupancyFraction=70"  

最初的時候我們用UseParallelGC和UseParallelOldGC,heap開了3G,NewRatio設成1.這樣的配置下younggc發生頻率約12,3秒一次,平均每次花費80ms左右,fullgc發生的頻率極低,每次消耗1s左右.從所有gc消耗系統時間看,系統使用率還是滿高的,但是不論是younggc還是oldgc,applicatonthreadpause的時間比較長,不合適web應用.我們也調小NewGeneration的,但是這樣會使fullgc時間加長.

后來我們就用CMSgc(-XX:+UseConcMarkSweepGC),當時的總heap還是3g,新生代1.5g后,觀察不是很理想,改為jvmheap為2g新生代設置-Xmn1g,在這樣的情況下younggc發生的頻率變成,7,8妙一次,平均每次時間40~50毫秒左右,CMSgc很少發生,每次時間在init-mark和remark(twostepsstopallappthread)總共平均花費80~90ms左右.

在這里我們曾經NewGeneration調大到1400m,總共2g的jvmheap,平均每次ygc花費時間60~70ms左右,CMSgc的init-mark和remark之和平均在50ms左右,這里我們意識到錯誤的方向,或者說CMS的作用,所以進行了修改

最后我們調小NewGeneration為256m,younggc2,3秒發生一次,平均停頓時間在25毫秒左右,CMSgc的init-mark和remark之和平均在50ms左右,這樣使系統比較平滑,經壓力測試,這個配置下系統性能是比較高的

在使用CMSgc的時候他有兩種觸發gc的方式:gc估算觸發和heap占用觸發.我們的1.5.0.09環境下有次old區heap占用再30%左右,她就頻繁gc,個人感覺系統估算觸發這種方式不靠譜,還是用heap使用比率觸發比較穩妥.

這些數據都來自64位測試機,過程中的數據都是我在jbosslog找的,當時沒有記下來,可能存在一點點偏差,但不會很大,基本過程就是這樣.

5:JVM參數配置總結

webserver作為交互性要求較高的應用,我們應該使用Parallel+CMS,UseParNewGC這個在jdk6-server上是默認的,newgenerationgc,新生代不能太大,這樣每次pause會短一些.CMSmark-sweepgeneration可以大一些,可以根據pausetime實際情況控制

【編輯推薦】

  1. JVM啟動參數的類別及使用
  2. JVM安裝與Tomcat配置具體步驟
  3. JVM參數設置使用技巧
  4. 配置JVM內存分配的妙招
  5. JVM啟動參數中標準參數列表速查手冊


 

責任編輯:佚名 來源: 51testing.com
相關推薦

2010-09-17 15:57:23

TomcatJVM

2018-11-01 10:34:37

JVM內存配置

2010-09-25 13:05:07

JVM參數

2010-09-26 09:54:43

JVM參數設置

2010-09-25 13:31:00

TomcatJVM

2010-09-17 17:02:24

JVM參數

2010-09-26 16:31:07

JVM參數配置

2010-11-29 13:33:00

sybase配置參數

2009-07-09 14:26:27

JVM參數

2010-09-27 09:53:45

TomcatJVM

2010-09-27 10:54:53

JVM參數配置

2023-09-01 08:18:53

Tomcat配置參數

2020-06-29 14:10:28

JVM參數配置

2010-09-26 09:08:17

JVM調優

2012-01-11 11:28:00

JavaJVM

2009-09-23 17:16:59

報表參數

2015-07-29 10:28:59

JVM參數配置參數

2010-09-25 13:13:17

tomcatJVM

2010-09-25 12:38:40

JVM內存模型

2009-07-17 17:11:47

Ruby生成JVM代碼
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲乱码一区二区三区在线观看 | 精品国产乱码久久久久久闺蜜 | 亚洲一区二区三区免费在线观看 | 免费在线观看一区二区 | 麻豆av免费观看 | 在线视频91 | 成人av高清 | 国产在线区 | 欧美一区二区三区日韩 | 亚洲成人99 | 午夜小视频在线观看 | 手机av在线| 国产精品美女www爽爽爽 | 国产成人精品999在线观看 | 国产精品久久久久久吹潮 | 日韩久久中文字幕 | 亚洲精品在线观 | 欧美99| 欧美日韩亚洲一区 | 国产在线观看一区二区三区 | 欧美在线视频一区 | 成人免费网站 | 国产精品综合一区二区 | 96av麻豆蜜桃一区二区 | 亚洲精品久久区二区三区蜜桃臀 | 亚洲综合在线一区 | 日日干日日操 | 国产成人一区二区三区电影 | 久久高清 | 免费成人毛片 | 欧美一区不卡 | 亚洲成人一区二区 | 在线国产一区二区 | 99福利视频 | 特级做a爱片免费69 精品国产鲁一鲁一区二区张丽 | 国产91丝袜在线18 | 91一区二区三区在线观看 | 欧美一区二区三区在线观看视频 | 久久久国产亚洲精品 | 欧美日韩亚洲视频 | 欧美精品一区二区在线观看 |