什麼是最常用的一套GC參數?服務器應用程序的最簡單的JVM GC參數集是什麼?
回答
我想我會分享一些已經適用於我過去調整過的服務器應用程序的設置。這些已經在Sun/Oracle JDK 6中(撰寫本文時)。
這可能是最常用的一組GC參數。當然,這些設置在很大程度上取決於應用程序的性質 - 對象生命週期,分配率,參考/指針的複雜程度等。如果您的體驗有任何不同,請分享它們。
基本設置。最小和最大堆是相同的。假設64位機器。大於4-6g的堆將需要仔細調整和測試。 6g不是強制性的
-server -Xms6g -Xmx6g -XX:MaxPermSize=256m
選項A(並行收集器):高吞吐量,面向批處理的工作。明顯的週期性暫停。
-XX:+UseParallelGC
選項B(CMS):較低的吞吐量,較低的延遲,連續處理。經常不可思議的微停頓,罕見的長時間停頓。
-XX:+UseParNewGC -XX:+ParallelRefProcEnabled -XX:+UseConcMarkSweepGC -XX:MaxGCPauseMillis=250 -XX:+CMSIncrementalMode -XX:+CMSIncrementalPacing -XX:+CMSParallelRemarkEnabled
在UAT/SAT /前期製作期間的額外監控。使用HPJmeter或GCViewer查看此日誌。
-verbose:gc -Xloggc:my_gc_output.hprof -XX:+PrintGCTimeStamps -XX:+PrintGCDetails
乾杯!
以及iCMS不被推薦[再](http://blogs.oracle.com/jonthecollector/entry/really_icms_really),特別是因爲大多數服務器有多個核心/線程。 –
所述的問題太模糊,無法回答理智。這取決於你的工作量,需求和目標。
一般來說,我會從-Xmx(您需要的RAM的數量)g和-XX:UseCompressedOops開始。除此之外,做一個測試用例。一次一個更改和測量其效果您自己的工作量。
這個問題真的很含糊,AFAIK沒有適用於所有/大多數應用程序的一套設置。順便說一句,除非我錯了,從JDK 6開始,JVM的自我調節能力也有限。您可以採取的步驟如下:
第1步。如果您「知道」您的應用程序將需要比默認更多的Xmx和MaxPermSize。 第2步。運行應用程序並觀看jstat。如果GC模式不合格,請繼續步驟3 步驟3.根據您的觀察結果,一次調整一個設置。 第4步。重複 - 轉到第2步:-)
這是我看到調整工作的唯一途徑。如果您使用的是產品(如Weblogic,Websphere),那麼提供者可能會推薦一些可以從頭開始的基本設置,但通常您會希望從默認設置開始。
此致敬禮
- 1. 調整高響應服務器應用程序的JVM(GC)
- 2. 什麼是「服務器應用程序」?
- 3. 什麼是Grails應用程序部署的最佳應用程序服務器?
- 4. Java應用程序服務器和JVM
- 5. 應用程序服務器和JVM之間的關係是什麼?
- 6. 什麼是Spring應用程序的最簡單的main()方法?
- 7. 將iPhone應用程序與不具有網絡服務的網站集成的最簡單方法是什麼
- 8. 什麼GC參數是與JVM一起運行的?
- 9. 部署WPF應用程序最簡單的方法是什麼?
- 10. Web應用程序最簡單的後端設置是什麼?
- 11. 部署Meteor應用程序最簡單的方法是什麼?
- 12. 什麼是最簡單的服務器端Javascript學習?
- 13. 聊天應用程序的服務器端應該是什麼?
- 14. 簡單的Reactjs應用程序不使用npm和服務器?
- 15. 什麼是簡單的Web服務
- 16. 沒有服務器的簡單消息應用程序
- 17. 多個JVM與單個應用程序服務器
- 18. C#中的簡單客戶端服務器應用程序#
- 19. 什麼類型的應用程序是服務器端應用程序?
- 20. 服務對服務應用程序的含義是什麼?
- 21. 實現簡單的Web服務項目的最簡單的方法是什麼?
- 22. 什麼是最簡單,最簡單的Backbone.js代碼來做REST(假設服務器端是正確的)?
- 23. 在iPhone應用程序中保存數據的最簡單方法是什麼?
- 24. 什麼是應用程序服務器的「企業級功能」?
- 25. 什麼是與neo4j服務器通信的web應用程序
- 26. Windows上的應用程序服務器是什麼?
- 27. 應用程序服務器提供的罐子是什麼?
- 28. 什麼是weblogic應用程序服務器的域名位置?
- 29. 什麼是從服務器在PhoneGap的應用程序
- 30. 什麼是應用程序服務器播放的類型?
我不確定這個問題是否真的在話題上。無論哪種方式,您都應該在線下方發佈一切,作爲您的問題的答案。你可以回答你自己的問題! –
由於init標記階段的單線程性質以及如何在icms模式下的清除之間調度,所以不建議在任何現代系統(超過1個內核)上使用icms – Matt
也應該將這些日誌始終保存在測試中6g堆的一攬子聲明是相當無意義的,例如壓縮版的影響 – Matt