目录
文章放置于:https://github.com/zgkaii/CS-Study-Notes,欢迎批评指正!
JVM常用启动参数
JVM启动参数的前缀主要有-
、-D
、-X
、-XX
、+/-
、:
-
以
-
开头为标准参数,所以的JVM都要实现这些参数,并且向后兼容。例如-server
。 -
-D
设置系统属性。例如-Dfile.encoding=UTF-8
。 -
以
-X
开头为非标准参数,基本都传给JVM,默认 JVM 实现这些参数的功能,但是并不保证所 有 JVM 实现都满足,且不保证向后兼容。 可以使 用 java -X 命令来查看当前 JVM 支持的非标准参数。例如-Xmx8g
。 -
以
-XX
开头的为非稳定参数,专门用于控制JVM的行为,跟具体的JVM实现有关,随时可能在下一个版本中取消。 -
-XX:+/-Flags
形式,+/-
是对布尔值进行开关。例如-XX:+UseG1GC
。 -
-XX:key=value
形式, 指定某个选项的值。例如-XX:MaxPermSize=256m
。
根据JVM启动参数的的特点与作用来分类,大致如下几种:
- 系统属性参数
- 运行模式参数
- 堆内存设置参数
- GC设置参数
- 分析诊断参数
JavaAgent
参数
系统属性参数
-Dfile.encoding=UTF-8
-Duser.timezone=GMT+08
-Dmaven.test.skip=true
-Dio.netty.eventLoopThreads=8
... ...
JVM里配置的环境变量只影响当前一个进程。
运行模式参数
-server
:设置 JVM 使用 server 模式,特点是启动速度比较慢,但运行时性能和内存管理效率 很高,适用于生产环境。在具有 64 位能力的 JDK 环境下将默认启用该模式,而忽略 -client 参 数。-client
:JDK1.7 之前在32位的 x86 机器上的默认值是 -client 选项。设置 JVM 使用 client 模 式,特点是启动速度比较快,但运行时性能和内存管理效率不高,通常用于客户端应用程序或 者 PC 应用开发和调试。此外,我们知道 JVM 加载字节码后,可以解释执行,也可以编译成本 地代码再执行,所以可以配置 JVM 对字节码的处理模式。-Xint
:在解释模式(interpreted mode)下运行,-Xint
标记会强制 JVM 解释执行所有的字节 码,这当然会降低运行速度,通常低10倍或更多。-Xcomp
:-Xcomp
参数与-Xint
正好相反,JVM 在第一次使用时会把所有的字节码编译成本地 代码,从而带来最大程度的优化。【注意预热】-Xmixed
:-Xmixed
是混合模式,将解释模式和编译模式进行混合使用,有 JVM 自己决定,这 是 JVM 的默认模式,也是推荐模式。 我们使用 java -version 可以看到 mixed mode 等信息。