zhaoyu@home:~$

jvm参数

JVM参数

JVM参数分为三类:

  • 标准参数:
    • -help
    • -version
  • -X参数(非标准参数)
    • -Xint
    • -Xcomp
  • -XX参数(非标准参数,使用频率高)
    • -XX:newSize
    • -XX:+UseSerialGC

标准参数,一般都是很稳定的,在JVM未来的版本中不会改变,可以使用java -help命令检索出所有标准参数。 可以使用java -X打印出所有的非标准参数。

JVM运行的模式

  • -Xint
    (interpreted)解释模式执行,强制JVM执行所有的字节码,会降低运行速度,通常是10倍或者更多。
  • -Xcomp
    和int相反,JVM在第一次使用时会把所有字节码编译成本地代码,从而带来更大程度的优化。然而很多时候也会有一些性能损失,原因是-Xcomp没有让JVM启用 JIT编译器的全部功能。JIT编译器可以对是否需要编译做判断,如果对所有代码都执行编译的话,对于只执行一次的代码就没有意义。
  • -Xmixed
    混合模式,将解释模式和编译模式混合使用,由JVM决定,是JVM默认的模式,也是推荐模式。

-XX参数

-XX主要用于JVM调优和debug。使用由两种模式,boolean类型和非boolean类型。

  • boolean
    • 格式:-XX:[+-]<name>表示启用或者禁用name属性。
    • 如:`-XX:+DisableExplicitGC表示禁用手动调用gc操作,system.gc()无效。
  • 非boolean
    • 格式:-XX:<name>=<value>表示将name属性的值设置为value。
    • 如:-XX:NewRatio=1表示新生代和老年代的比值。

      -Xms与-Xmx参数

  • -Xms设置jvm的堆内存初始化大小。等价于-XX:InitialHeapSize
  • -Xmx参数设置堆内存的最大大小。等价于-XX:MaxHeapSize

-XX:+PrintFlagsFinal

打印JVM运行时的参数,

-XX:+PrintGC or -verbose:gc 打印出关于堆heap和每次收集的GC信息。