在jvm中有很多的参数可以进行设置,这样可以让jvm在各种环境中都能够高效的运行。绝大部分的参数保持默认即可。
常用参数说明(重要)
Xms 起始内存
Xmx 最大内存
Xmn 新生代内存
Xss 栈大小。 就是创建线程后,分配给每一个线程的内存大小
-XX:NewRatio=n:设置年轻代和年老代的比值。如:为3,表示年轻代与年老代比值为1:3,年轻代占整个年轻代年老代和的1/4
-XX:SurvivorRatio=n:年轻代中Eden区与两个Survivor区的比值。注意Survivor区有两个。如:3,表示Eden:Survivor=3:2,一个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命令查看。