JVM 常用指令

栈设置

  • -Xss: 栈大小

堆设置

  • -Xms: 初始堆大小
  • -Xmx: 最大堆大小
  • -Xmn: 新生代大小
  • -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:PretenureSizeThreshold: 大于此值的对象直接在老年代分配
  • -XX:MaxTenuringThreshold: 定义年龄的阈值。在 Eden 中的对象经过 Minor GC 依然存活,将移动到 Survivor 中,年龄增加 1 岁,超过该年龄阈值将进入老年代

永久代设置

  • -XX:PermSize: 初始化永久代大小
  • -XX:MaxPermSize=n: 永久代最大容量

元空间:

  • -XX:MetaspaceSize : 分配给类元数据空间的初始大小。
    • MetaspaceSize 的值设置的过大会延长垃圾回收时间。
    • 垃圾回收过后,引起下一次垃圾回收的类元数据空间的大小可能会变大。
  • -XX:MaxMetaspaceSize :分配给类元数据空间的最大值
    • 超过此值就会触发 Full GC 。此值默认没有限制,但应取决于系统内存的大小,JVM 会动态地改变此值。

收集器设置

  • -XX:+UseSerialGC: 设置串行收集器
  • -XX:+UseParallelGC: 设置并行收集器
  • -XX:+UseParalledlOldGC: 设置并行年老代收集器
  • -XX:+UseConcMarkSweepGC: 设置并发收集器
  • -XX:ParallelCMSThreads: 并发标记扫描垃圾回收器 = 为使用的线程数量
  • -XX:+UseG1GC: G1 垃圾回收器

并行收集器配置:

  • -XX:ParallelGCThreads=n: 设置并行收集器收集时使用的 CPU 数和并行收集线程数。默认开启的线程数量与 CPU 数量相同
  • -XX:MaxGCPauseMillis=n: 设置并行收集最大暂停时间
  • -XX:GCTimeRatio=n: 设置垃圾回收时间占程序运行时间的百分比。公式为 1/(1+n)-XX:+CMSIncrementalMode: 设置为增量模式。适用于单 CPU 情况。
  • -XX:ParallelGCThreads=n: 设置并发收集器年轻代收集方式为并行收集时,使用的 CPU 数。并行收集线程数。

垃圾回收统计信息

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