JVM常用参数

440 阅读3分钟

此篇博文适用于Java8,因为官网相关文档不太好找,所以在无意间看到该文档,故特地整理了一下常用的参数记录下来,方便以后查阅。官网地址

-verbose

该参数表明需要输出指定的详细信息。

  • -verbose:class 显示每个加载类的消息
  • -verbose:gc 显示垃圾回收相关信息
  • -verbose:jni 输出关于Java Native方法的调用信息

-Xms

该参数用于设置堆的最小值和初始大小(字节),要求是1024的的倍数且大于1M。允许通过k(或K)、m(或M)、g(或G)设置大小,如:

  • -Xms6291456
  • -Xms6144k
  • -Xms6m 该参数如果未设置,则其初始值将为分配给新生代与老年代的大小之和。-XX:InitalHeapSize也可用于设置初始堆大小。

-Xmn

该参数用于设置新生代堆的最大值与初始值。允许通过k(或K)、m(或M)、g(或G)设置大小,如:

  • -Xmn256m
  • -Xmn262144k
  • -Xmn268435456 新生代堆内存区域通常用于存储一些“朝生夕死”的新对象,较其他内存区域垃圾回收频率较高,如果设置的过小,会导致Minor GC过于频繁。如果设置的过大,则只会触发Full GC,导致垃圾回收时间过长,因此推荐将新生代堆内存大小设置为整个堆内存的1/4~1/2。
    可使用-XX:NewSize-XX:MaxNewSize参数来代替-Xmn设置新生代堆的初始值和最大值。

-Xss

该参数用于设置栈的大小。允许通过k(或K)、m(或M)、g(或G)设置大小,如:

  • -Xss1m
  • -Xss1024k
  • -Xss1048576 该参数作用等同于-XX:ThreadStackSize 对于不同的平台,该参数默认值不同:
  • Linux/ARM (32-bit): 320 KB
  • Linux/i386 (32-bit): 320 KB
  • Linux/x64 (64-bit): 1024 KB
  • OS X (64-bit): 1024 KB
  • Oracle Solaris/i386 (32-bit): 320 KB
  • Oracle Solaris/x64 (64-bit): 1024 KB

-XX:+PrintGCDetails

该参数用于打印每一次垃圾回收的信息,默认情况下该功能是关闭的。

-XX:SurvivorRatio=ratio

该参数用于设置Eden区与Survivor区之间的比例,默认值为8。格式为:

  • -XX:SurvivorRatio=4

-XX:+HeapDumpOnOutOfMemoryError

该参数用于当抛出java.lang.OutOfMemoryError异常时,通过heap profiler (HPROF)将堆转储为dump文件以便用于后续的内存分析。该功能默认是禁用的。可通过-XX:HeapDumpPath设置dump文件的存储路径与名称。

-XX:HeapDumpPath=path

当设置了-XX:+HeapDumpOnOutOfMemoryError时,设置用于写入heap profiler (HPROF)提供的堆转储的路径和文件名。 默认情况下,该文件在当前工作目录中创建,并命名为java_pid[pid编号].hprof,其中pid是导致错误的进程的标识符。格式为:

  • -XX:HeapDumpPath=./java_pid%p.hprof %p 表示当前进程标识符
  • -XX:HeapDumpPath=/var/log/java/java_heapdump.hprof

-XX:ThreadStackSize

该参数用于设置栈的大小。允许通过k(或K)、m(或M)、g(或G)设置大小,如:

  • -XX:ThreadStackSize=1m
  • -XX:ThreadStackSize=1024k
  • -XX:ThreadStackSize=1048576