Home Archives Categories Tags Docs

Java jvm 环境调优

发布时间: 更新时间: 总字数:935 阅读时间:2m 作者: 分享

Java jvm xmx xms 环境调优

参数说明

说明:

  • JVM 初始分配的内存由 -Xms 指定,默认是物理内存的1/64
  • JVM 最大分配的内存由 -Xmx 指 定,默认是物理内存的1/4
  • 默认空余堆内存小于 40% 时,JVM就会增大堆直到-Xmx的最大限制
  • 空余堆内存大于 70% 时,JVM会减少堆直到-Xms的最小限制
  • 因此服务器一般设置 -Xms、 -Xmx 相等以避免在每次 GC 后调整堆的大小

可以利用JVM提供的 -Xmn -Xms -Xmx 等选项可进行堆内存设置,一般的要将-Xms 和-Xmx 选项设置为相同,而 -Xmn 为 ¼ 的 -Xmx 值,建议堆的最大值设置为可用内存的最大值的80%。

堆设置

  • -Xms: 初始堆大小,应用程序的最小内存大小
  • -Xmx: 最大堆大小,应用程序的最大内存大小 (-Xmx >= -Xms)
  • -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: 设置持久代大小

说明:

  • Xms/Xmx 可使用兆字节 (m) 或千兆字节 (g) 来指定 size。例如:-Xmx2g 设置 2GB 的最大堆大小。
  • 有关缺省值的信息,请参阅 JVM 的缺省设置。

收集器设置

  • -XX:+UseSerialGC: 设置串行收集器
  • -XX:+UseParallelGC: 设置并行收集器
  • -XX:+UseParalledlOldGC: 设置并行年老代收集器
  • -XX:+UseConcMarkSweepGC: 设置并发收集器

垃圾回收统计信息

  • -XX:+PrintGC
  • -XX:+PrintGCDetails
  • -XX:+PrintGCTimeStamps
  • -Xloggc:filename

并行收集器设置

  • -XX:ParallelGCThreads=n:设置并行收集器收集时使用的CPU数。并行收集线程数。
  • -XX:MaxGCPauseMillis=n:设置并行收集最大暂停时间
  • -XX:GCTimeRatio=n:设置垃圾回收时间占程序运行时间的百分比。公式为1/(1+n)

并发收集器设置

  • -XX:+CMSIncrementalMode:设置为增量模式。适用于单CPU情况。
  • -XX:ParallelGCThreads=n:设置并发收集器年轻代收集方式为并行收集时,使用的CPU数。并行收集线程数。


使用示例

  • -Xms2m -Xmx64m

堆起始为 2 MB,可增加到最大值 64 MB。

  • -Xms100m -Xmx100m

堆起始为 100 MB,从不增长。

  • -Xms20m -Xmx1024m

堆起始为 20 MB,可增加到最大值 1 GB。

  • -Xms50m

堆起始为 50 MB,可增加到缺省最大值。

  • -Xmx256m

堆起始为缺省初始值,并且可增加到最大值 256 MB。
如果超出 -Xmx 选项所设置的限制,那么 JVM 会生成 OutofMemoryError。

完毕。

相关文章
最近更新
最新评论
加载中...