JVM内存参数简述

  1. #常用的设置
  2. -Xms:初始堆大小,JVM 启动的时候,给定堆空间大小。
  3. -Xmx:最大堆大小,JVM 运行过程中,如果初始堆空间不足的时候,最大可以扩展到多少。
  4. -Xmn:设置堆中年轻代大小。整个堆大小=年轻代大小+年老代大小+持久代大小。一般建议年轻代的大小在整个堆的1/2~1/4
  5. -XX:NewSize=n 设置年轻代初始化大小大小
  6. -XX:MaxNewSize=n 设置年轻代最大值
  7. -XX:NewRatio=n 设置年轻代和年老代的比值。如: -XX:NewRatio=3,表示年轻代与年老代比值为 13,年轻代占整个年轻代+年老代和的 1/4
  8. -XX:SurvivorRatio=n 年轻代中 Eden 区与两个 Survivor 区的比值。注意 Survivor 区有两个。8表示两个Survivor :eden=2:8 ,即一个Survivor占年轻代的1/10,默认就为8
  9. -Xss:设置每个线程的堆栈大小。JDK5后每个线程 Java 栈大小为 1M,以前每个线程堆栈大小为 256K
  10. -XX:ThreadStackSize=n 线程堆栈大小
  11. -XX:PermSize=n 设置持久代初始值
  12. -XX:MaxPermSize=n 设置持久代大小
  13. -XX:MaxTenuringThreshold=n 设置年轻带垃圾对象最大年龄。如果设置为 0 的话,则年轻代对象不经过 Survivor 区,直接进入年老代。
  14. #下面是一些不常用的
  15. -XX:LargePageSizeInBytes=n 设置堆内存的内存页大小
  16. -XX:+UseFastAccessorMethods 优化原始类型的getter方法性能
  17. -XX:+DisableExplicitGC 禁止在运行期显式地调用System.gc(),默认启用
  18. -XX:+AggressiveOpts 是否启用JVM开发团队最新的调优成果。例如编译优化,偏向锁,并行年老代收集等,jdk6纸之后默认启动
  19. -XX:+UseBiasedLocking 是否启用偏向锁,JDK6默认启用
  20. -Xnoclassgc 是否禁用垃圾回收
  21. -XX:+UseThreadPriorities 使用本地线程的优先级,默认启用

JVM的GC收集器设置

  1. -XX:+UseSerialGC:设置串行收集器,年轻带收集器
  2. -XX:+UseParNewGC:设置年轻代为并行收集。可与 CMS 收集同时使用。JDK5.0 以上,JVM 会根据系统配置自行设置,所以无需再设置此值。
  3. -XX:+UseParallelGC:设置并行收集器,目标是目标是达到可控制的吞吐量
  4. -XX:+UseParallelOldGC:设置并行年老代收集器,JDK6.0 支持对年老代并行收集。
  5. -XX:+UseConcMarkSweepGC:设置年老代并发收集器
  6. -XX:+UseG1GC:设置 G1 收集器,JDK1.9默认垃圾收集器
  7. -XX:MetaspaceSize=n 指定元空间第一次触发垃圾回收的内存大小的阈值。当元空间内存占用不断增大,直到达到这个阈值时,就会触发一次垃圾回收。所以,适当的增大这个阈值,会减少垃圾回收的次数。默认值根据平台而定,一般情况下大约20.8MB
  8. -XX:MaxMetaspaceSize=n 指定元空间所分配内存的最大值,默认是没有限制,取决于系统的可用内存量,理论上可以占满整个系统的内存。为了避免这种惨剧,影响系统上的其他应用,需要适当设置它的大小