在jvm中有很多的参数可以进行设置,这样可以让jvm在各种环境中都能够高效的运行。绝大部分的参数保持默认即可。

常用参数说明(重要)

Xms 起始内存

Xmx 最大内存

Xmn 新生代内存

Xss 栈大小。 就是创建线程后,分配给每一个线程的内存大小

-XX:NewRatio=n:设置年轻代和年老代的比值。如:3,表示年轻代与年老代比值为13,年轻代占整个年轻代年老代和的1/4

-XX:SurvivorRatio=n:年轻代中Eden区与两个Survivor区的比值。注意Survivor区有两个。如:3,表示Eden:Survivor=32,一个Survivor区占整个年轻代的1/5

-XX:MaxPermSize=n:设置持久代大小

收集器设置
-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数。并行收集线程数

三种参数类型

jvm的参数类型分为三类

标准参数

  • -help
  • -version

-X参数 (非标准参数)
-Xint
-Xcomp

-XX参数(使用率较高)

  • -XX:newSize
  • -XX:+UseSerialGC

标准参数

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

其中选项包括:

‐d32 使用 32 位数据模型 (如果可用)
‐d64 使用 64 位数据模型 (如果可用)
‐server 选择 “server” VM
默认 VM 是 server,
因为您是在服务器类计算机上运行。
‐cp <目录和 zip/jar 文件的类搜索路径>
‐classpath <目录和 zip/jar 文件的类搜索路径>
用 : 分隔的目录, JAR 档案
和 ZIP 档案列表, 用于搜索类文件。
‐D<名称>=<值>
设置系统属性
‐verbose:[class|gc|jni]
启用详细输出
‐version 输出产品版本并退出
‐version:<值>
警告: 此功能已过时, 将在
未来发行版中删除。
需要指定的版本才能运行
‐showversion 输出产品版本并继续
‐jre‐restrict‐search | ‐no‐jre‐restrict‐search
警告: 此功能已过时, 将在
未来发行版中删除。
在版本搜索中包括/排除用户专用 JRE
‐? ‐help 输出此帮助消息
‐X 输出非标准选项的帮助
‐ea[:…|:]
‐enableassertions[:…|:]
按指定的粒度启用断言
‐da[:…|:]
‐disableassertions[:…|:]
禁用具有指定粒度的断言
‐esa | ‐enablesystemassertions
启用系统断言
‐dsa | ‐disablesystemassertions
禁用系统断言
‐agentlib:[=<选项>]
加载本机代理库 , 例如 ‐agentlib:hprof
另请参阅 ‐agentlib:jdwp=help 和 ‐agentlib:hprof=help
‐agentpath:[=<选项>]
按完整路径名加载本机代理库
‐javaagent:[=<选项>]
加载 Java 编程语言代理, 请参阅 java.lang.instrument
‐splash:
使用指定的图像显示启动屏幕

-XX参数

-XX参数也是非标准参数,主要用于jvm的调优和debug操作
-XX参数的使用有2种方式,一种是boolean类型,一种是非boolean类型:
boolean类型

  • 格式:-XX:[±]
  • 如:-XX:+DisableExplicitGC 表示禁用手动调用gc操作,也就是说调用
    System.gc()无效

非boolean类型

  • 格式:-XX:
  • 如:-XX:NewRatio=1 表示新生代和老年代的比值

-Xms与-Xmx参数

  • -Xms与-Xmx分别是设置jvm的堆内存的初始大小和最大大小。
  • -Xmx2048m:等价于-XX:MaxHeapSize,设置JVM最大堆内存为2048M。
  • -Xms512m:等价于-XX:InitialHeapSize,设置JVM初始堆内存为512M。

适当的调整jvm的内存大小,可以充分利用服务器资源,让程序跑的更快。

查看jvm的运行参数

  • 有些时候我们需要查看jvm的运行参数,这个需求可能会存在2种情况:
  • 第一,运行java命令时打印出运行参数;
  • 第二,查看正在运行的java进程的参数;

运行java命令时打印参数

  • 运行java命令时打印参数,需要添加-XX:+PrintFlagsFinal参数即可。
  • 参数有boolean类型和数字类型,值的操作符是=或:=,分别代表默认值和被修改的值

查看正在运行的jvm参数

  • 如果想要查看正在运行的jvm就需要借助于jinfo命令查看。