JVM典型配置和调优举例

1. 堆设置
-Xms: :初始堆大小。
-Xmx: :最大堆大小。
-XX:NewSize=n: :设置年轻代大小。
-XX:NewRatio=n: : :设置年轻代和年老代的比值。如:为 3,表示年轻代与年老代比值为 1:3,
年轻代占整个年轻代年老代和的 1/4。
-XX:SurvivorRatio=n: : :年轻代中 Eden 区与两个 Survivor 区的比值。注意 Survivor 区有两个。
如:3,表示 Eden:Survivor=3:2,一个 Survivor 区占整个年轻代的 1/5。
-XX:MaxPermSize=n: : 设置持久代大小。
2. 收集器设置
-XX:+UseSerialGC: : 设置串行收集器。
-XX:+UseParallelGC: : 设置并行收集器。
-XX:+UseParalledlOldGC: : 设置并行年老代收集器。
-XX:+UseConcMarkSweepGC: : 设置并发收集器。
3. 垃圾回收统计信息设置
-XX:+PrintGC
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps
-Xloggc:filename
4. 并行收集器设置
-XX:ParallelGCThreads=n:设置并行收集器收集时使用的 CPU 数。并行收集线程数。
-XX:MaxGCPauseMillis=n:设置并行收集最大暂停时间。
29
-XX:GCTimeRatio=n:设置垃圾回收时间占程序运行时间的百分比。公式为 1/(1+n)。
5. 并发收集器设置
-XX:+CMSIncrementalMode: : 设置为增量模式。适用于单 CPU 情况。
-XX:ParallelGCThreads=n: : 设置并发收集器年轻代收集方式为并行收集时,使用的 CPU 数。并行
收集线程数。
6. 年轻代大小选择
响应时间优先的应用 : :尽可能设大,直到接近系统的最低响应时间限制(根据实际情况选择)。
在此种情况下,年轻代收集发生的频率也是最小的。同时,减少到达年老代的对象。
吞吐量优先的应用 :尽可能的设置大,可能到达 Gbit 的程度。因为对响应时间没有要求,
垃圾收集可以并行进行,一般适合 8CPU 以上的应用。
7. 年老代大小选择
响应时间优先的应用 : :年老代使用并发收集器,所以其大小需要小心设置,一般要考虑 并发
会话 率和 会话持续时间等一些参数。如果堆设置小了,可以会造成内存碎片、高回收频率以
及应用暂停而使用传统的标记清除方式;如果堆大了,则需要较长的收集时间。最优化的方
案,一般需要参考以下数据获得:

1. 并发垃圾收集信息
2. 持久代并发收集次数
3. 传统 GC 信息
4. 花在年轻代和年老代回收上的时间比例
减少年轻代和年老代花费的时间,一般会提高应用的效率

posted @ 2019-06-16 01:33  zhangqi0828  阅读(292)  评论(0编辑  收藏  举报