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

JVM基礎(chǔ):生產(chǎn)環(huán)境參數(shù)實(shí)例及分析

開發(fā) 后端
文章介紹了JVM生成環(huán)境參數(shù)實(shí)例及分析,增加了多個(gè)生成環(huán)境實(shí)例,詳細(xì)請看下文。

java application項(xiàng)目(非web項(xiàng)目)

改進(jìn)前:

  1. -Xms128m  
  2. -Xmx128m  
  3. -XX:NewSize=64m  
  4. -XX:PermSize=64m  
  5. -XX:+UseConcMarkSweepGC  
  6. -XX:CMSInitiatingOccupancyFraction=78 
  7. -XX:ThreadStackSize=128-Xloggc:logs/gc.log  
  8. -Dsun.rmi.dgc.server.gcInterval=3600000 
  9. -Dsun.rmi.dgc.client.gcInterval=3600000 
  10. -Dsun.rmi.server.exceptionTrace=true 

問題:

◆  permsize 設(shè)置較小,很容易達(dá)到報(bào)警范圍(0.8)

◆ 沒有設(shè)置MaxPermSize,堆增長會(huì)帶來額外壓力。

◆ NewSize較大,old gen 剩余空間64m,一方面可能會(huì)帶來old區(qū)容易增長到報(bào)警范圍(監(jiān)控?cái)?shù)據(jù)顯示oldgenused長期在50m左右,接近78%,容易出現(xiàn)full gc),另一方面也存在promontion fail風(fēng)險(xiǎn)。

改進(jìn)后:

  1. -Xms128m  
  2. -Xmx128m  
  3. -Xmn24m  
  4. -XX:PermSize=80m  
  5. -XX:MaxPermSize=80m  
  6. -Xss256k-XX:SurvivorRatio=1 
  7. -XX:MaxTenuringThreshold=20 
  8. -XX:+UseParNewGC  
  9. -XX:+UseConcMarkSweepGC  
  10. -XX:CMSInitiatingOccupancyFraction=75 
  11. -XX:+UseCMSCompactAtFullCollection  
  12. -XX:+CMSParallelRemarkEnabled  
  13. -XX:CMSFullGCsBeforeCompaction=2 
  14. -XX:SoftRefLRUPolicyMSPerMB=0 
  15. -XX:+PrintClassHistogram  
  16. -XX:+PrintGCDetails  
  17. -XX:+PrintGCTimeStamps  
  18. -XX:+PrintHeapAtGC  
  19. -Xloggc:logs/gc.log  
  20. -Dsun.rmi.dgc.server.gcInterval=3600000 
  21. -Dsun.rmi.dgc.client.gcInterval=3600000 
  22. -Dsun.rmi.server.exceptionTrace=true 

修改點(diǎn):

◆ PermSize與MaxPermSize都設(shè)置為80,一方面避免non heap warn(報(bào)警閥值0.8 非對內(nèi)存一般占用到60M以內(nèi)),一方面避免堆伸縮帶來的壓力

◆ 通過設(shè)置Xmn=24M及SurvivorRatio=1 使得Eden區(qū)=from space=to space=8M,降低了Eden區(qū)大小,降低YGC的時(shí)間(降低到3-4ms左右),同時(shí)通過設(shè)MaxTenuringThreshold=20,使得old gen的增長很緩慢。帶來的問題是YGC的次數(shù)明顯提高了很多。

◆ 其他參數(shù)優(yōu)化 修改后帶來的好處見JVM參數(shù)設(shè)置

再次改進(jìn)后

  1. -Xms128m  
  2. -Xmx128m  
  3. -Xmn36m  
  4. -XX:PermSize=80m  
  5. -XX:MaxPermSize=80m  
  6. -Xss256k  
  7. -XX:SurvivorRatio=1 
  8. -XX:MaxTenuringThreshold=20 
  9. -XX:+UseParNewGC  
  10. -XX:+UseConcMarkSweepGC  
  11. -XX:CMSInitiatingOccupancyFraction=73 
  12. -XX:+UseCMSCompactAtFullCollection  
  13. -XX:+CMSParallelRemarkEnabled  
  14. -XX:CMSFullGCsBeforeCompaction=2 
  15. -XX:SoftRefLRUPolicyMSPerMB=0 
  16. -XX:+PrintClassHistogram  
  17. -XX:+PrintGCDetails  
  18. -XX:+PrintGCTimeStamps  
  19. -XX:+PrintHeapAtGC  
  20. -Xloggc:logs/gc.log  
  21. -Dsun.rmi.dgc.server.gcInterval=3600000 
  22. -Dsun.rmi.dgc.client.gcInterval=3600000 
  23. -Dsun.rmi.server.exceptionTrace=true 

修改點(diǎn):

在上面的基礎(chǔ)上調(diào)整Xmn大小到36M,設(shè)置CMSInitiatingOccupancyFraction=73。

Dden區(qū)與Survivor區(qū)大小都增加到12M,通過CMSInitiatingOccupancyFraction計(jì)算公式,計(jì)算得出value為73是,可以避免promotion faild問題,同時(shí)滿足堆內(nèi)存監(jiān)控報(bào)警值在80%:內(nèi)存大小128M*80%=102.4M 102.4M-36M=66.4M(老生代達(dá)到此值報(bào)警) 老生代達(dá)到67.15M(92M*0.73)將發(fā)生Full GC,所以在老生代大小達(dá)到66.4M時(shí)也就是WARN報(bào)警時(shí)將很有可能出現(xiàn)Full GC。

增大了Eden和Survivor區(qū)的值,會(huì)減小YGC的次數(shù),但由于空間變大理論上也會(huì)相應(yīng)的增加YGC的時(shí)間,不過由于新生代本身就很?。ú?6M)這點(diǎn)兒變化可以忽略掉。實(shí)際的監(jiān)控值顯示YGC的時(shí)間在4-5ms之間。是可以接受范圍。

SurvivorRatio 這個(gè)值還得在仔細(xì)考慮下,有待優(yōu)化中

網(wǎng)上某個(gè)牛人的配置 :每天幾百萬pv一點(diǎn)問題都沒有,網(wǎng)站沒有停頓

  1. $JAVA_ARGS  
  2. .="  
  3. -Dresin.home=$SERVER_ROOT  
  4. -server  
  5. -Xms6000M  
  6. -Xmx6000M  
  7. -Xmn500M  
  8. -XX:PermSize=500M  
  9. -XX:MaxPermSize=500M  
  10. -XX:SurvivorRatio=65536 
  11. -XX:MaxTenuringThreshold=0 
  12. -Xnoclassgc  
  13. -XX:+DisableExplicitGC  
  14. -XX:+UseParNewGC  
  15. -XX:+UseConcMarkSweepGC  
  16. -XX:+UseCMSCompactAtFullCollection  
  17. -XX:CMSFullGCsBeforeCompaction=0 
  18. -XX:+CMSClassUnloadingEnabled-XX:  
  19. -CMSParallelRemarkEnabled  
  20. -XX:CMSInitiatingOccupancyFraction=90 
  21. -XX:SoftRefLRUPolicyMSPerMB=0 
  22. -XX:+PrintClassHistogram  
  23. -XX:+PrintGCDetails  
  24. -XX:+PrintGCTimeStamps  
  25. -XX:+PrintHeapAtGC  
  26. -Xloggc:log/gc.log  
  27. "; 

說明一下, -XX:SurvivorRatio=65536 -XX:MaxTenuringThreshold=0就是去掉了救助空間;

-Xnoclassgc禁用類垃圾回收,性能會(huì)高一點(diǎn);

-XX:+DisableExplicitGC禁止System.gc(),免得程序員誤調(diào)用gc方法影響性能;

-XX:+UseParNewGC,對年輕代采用多線程并行回收,這樣收得快;

帶CMS參數(shù)的都是和并發(fā)回收相關(guān)的,不明白的可以上網(wǎng)搜索;

CMSInitiatingOccupancyFraction,這個(gè)參數(shù)設(shè)置有很大技巧,基本上滿足(Xmx-Xmn)*(100-CMSInitiatingOccupancyFraction)/100>=Xmn就不會(huì)出現(xiàn)promotion failed。在我的應(yīng)用中Xmx是6000,Xmn是500,那么Xmx-Xmn是5500兆,也就是年老代有5500兆,CMSInitiatingOccupancyFraction=90說明年老代到90%滿的時(shí)候開始執(zhí)行對年老代的并發(fā)垃圾回收(CMS),這時(shí)還剩10%的空間是5500*10%=550兆,所以即使Xmn(也就是年輕代共500兆)里所有對象都搬到年老代里,550兆的空間也足夠了,所以只要滿足上面的公式,就不會(huì)出現(xiàn)垃圾回收時(shí)的promotion failed;

SoftRefLRUPolicyMSPerMB這個(gè)參數(shù)我認(rèn)為可能有點(diǎn)用,官方解釋是softly reachable objects will remain alive for some amount of time after the last time they were referenced. The default value is one second of lifetime per free megabyte in the heap,我覺得沒必要等1秒;

  1. -Xmx4000M  
  2. -Xms4000M  
  3. -Xmn600M  
  4. -XX:PermSize=500M  
  5. -XX:MaxPermSize=500M  
  6. -Xss256K  
  7. -XX:+DisableExplicitGC  
  8. -XX:SurvivorRatio=1 
  9. -XX:+UseConcMarkSweepGC  
  10. -XX:+UseParNewGC  
  11. -XX:+CMSParallelRemarkEnabled  
  12. -XX:+UseCMSCompactAtFullCollection  
  13. -XX:CMSFullGCsBeforeCompaction=0 
  14. -XX:+CMSClassUnloadingEnabled  
  15. -XX:LargePageSizeInBytes=128M  
  16. -XX:+UseFastAccessorMethods  
  17. -XX:+UseCMSInitiatingOccupancyOnly  
  18. -XX:CMSInitiatingOccupancyFraction=80 
  19. -XX:SoftRefLRUPolicyMSPerMB=0 
  20. -XX:+PrintClassHistogram  
  21. -XX:+PrintGCDetails  
  22. -XX:+PrintGCTimeStamps  
  23. -XX:+PrintHeapAtGC  
  24. -Xloggc:log/gc.log 

改進(jìn)方案:

上面方法不太好,因?yàn)闆]有用到救助空間,所以年老代容易滿,CMS執(zhí)行會(huì)比較頻繁。我改善了一下,還是用救助空間,但是把救助空間加大,這樣也不會(huì)有promotion failed。
具體操作上,32位Linux和64位Linux好像不一樣,64位系統(tǒng)似乎只要配置MaxTenuringThreshold參數(shù),CMS還是有暫停。為了解決暫停問題和promotion failed問題,***我設(shè)置-XX:SurvivorRatio=1 ,并把MaxTenuringThreshold去掉,這樣即沒有暫停又不會(huì)有promotoin failed,而且更重要的是,年老代和***代上升非常慢(因?yàn)楹枚鄬ο蟮讲涣四昀洗捅换厥樟耍?,所以CMS執(zhí)行頻率非常低,好幾個(gè)小時(shí)才執(zhí)行一次,這樣,服務(wù)器都不用重啟了。

某網(wǎng)友:

  1. $JAVA_ARGS  
  2. .="  
  3. -Dresin.home=$SERVER_ROOT  
  4. -server  
  5. -Xmx3000M  
  6. -Xms3000M  
  7. -Xmn600M  
  8. -XX:PermSize=500M  
  9. -XX:MaxPermSize=500M  
  10. -Xss256K  
  11. -XX:+DisableExplicitGC  
  12. -XX:SurvivorRatio=1 
  13. -XX:+UseConcMarkSweepGC  
  14. -XX:+UseParNewGC  
  15. -XX:+CMSParallelRemarkEnabled  
  16. -XX:+UseCMSCompactAtFullCollection  
  17. -XX:CMSFullGCsBeforeCompaction=0 
  18. -XX:+CMSClassUnloadingEnabled  
  19. -XX:LargePageSizeInBytes=128M  
  20. -XX:+UseFastAccessorMethods  
  21. -XX:+UseCMSInitiatingOccupancyOnly  
  22. -XX:CMSInitiatingOccupancyFraction=70 
  23. -XX:SoftRefLRUPolicyMSPerMB=0 
  24. -XX:+PrintClassHistogram  
  25. -XX:+PrintGCDetails  
  26. -XX:+PrintGCTimeStamps  
  27. -XX:+PrintHeapAtGC  
  28. -Xloggc:log/gc.log"; 

64位jdk參考設(shè)置,年老代漲得很慢,CMS執(zhí)行頻率變小,CMS沒有停滯,也不會(huì)有promotion failed問題,內(nèi)存回收得很干凈。

參考:JVM參數(shù)調(diào)優(yōu),無停滯實(shí)踐

原文鏈接:http://www.cnblogs.com/redcreen/archive/2011/05/05/2038331.html

【系列文章】 

  1. JVM基礎(chǔ):JVM監(jiān)測&工具
  2. JVM基礎(chǔ):JVM參數(shù)設(shè)置、分析
  3. JVM基礎(chǔ):GC策略&內(nèi)存申請、對象衰老
  4. JVM基礎(chǔ):JVM內(nèi)存組成及分配
責(zé)任編輯:林師授 來源: redcreen的博客
相關(guān)推薦

2012-01-11 11:28:00

JavaJVM

2021-07-26 12:56:33

JVM參數(shù)環(huán)境

2012-09-27 10:50:39

自動(dòng)化監(jiān)控

2012-01-11 10:45:57

JavaJVM

2010-03-04 10:56:52

JVM參數(shù)

2010-01-08 16:01:19

華為交換機(jī)DHCP

2010-09-26 09:31:27

JVM啟動(dòng)參數(shù)

2023-01-26 00:25:09

JVM設(shè)置技術(shù)

2020-10-30 08:35:23

Java Virtua

2012-01-11 13:04:40

JavaJVM

2009-07-08 11:11:23

JVM

2021-04-12 09:36:14

JVM生產(chǎn)問題JVM FULL GC

2010-09-25 13:31:00

TomcatJVM

2011-08-24 17:41:16

MySQL死鎖

2010-09-27 08:38:49

JVM堆JVM棧

2015-08-27 14:59:58

SSISParameterEnvironment

2022-09-01 08:50:22

kubernetes容器

2020-07-21 14:19:18

JVM編程語言

2010-09-26 14:55:46

JVM內(nèi)存監(jiān)控

2010-09-27 14:09:49

NetbeansJVM參數(shù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 国产精品福利视频 | 欧美性精品 | 午夜精品一区二区三区在线视频 | 精品国产一区二区国模嫣然 | 亚洲成av人片在线观看无码 | 国产亚洲精品精品国产亚洲综合 | 日韩在线视频一区 | 亚洲精品一区二区在线观看 | 欧美日韩黄色一级片 | 亚洲精品乱码久久久久久9色 | 欧美激情综合 | 免费在线观看h片 | www狠狠干 | 国产99视频精品免费视频7 | 日本中文字幕一区 | 国产色网| 欧美精品一二三 | 午夜视频在线观看视频 | 日韩av一二三区 | 久久亚洲春色中文字幕久久久 | 亚洲天堂一区二区 | 手机在线一区二区三区 | 国产亚洲一区二区三区在线 | 狠狠操狠狠干 | 精品国产乱码久久久久久蜜柚 | 九九亚洲| 国产中文字幕在线 | 日本中出视频 | 欧美在线视频一区二区 | 国产传媒在线播放 | 国产乱一区二区三区视频 | 视频二区在线观看 | 成人午夜免费福利视频 | 综合色久| 北条麻妃99精品青青久久主播 | 97视频在线观看免费 | 国产一级淫片a直接免费看 免费a网站 | 国产99免费 | 精品欧美一区二区在线观看欧美熟 | 日韩成人在线播放 | 国产欧美精品区一区二区三区 |