JVM 启动参数详解
JVM 作为一个通用的虚拟机,我们可以通过启动Java命令时指定不同JVM参数,让 JVM调整自己的运行状态和行为,内存管理和垃圾回收的GC算法等等。
直接通过命令行启动 Java程序的格式为:
java [options] classname [args]
java [options] -jar filename [args]
- 其中[options] 部分称为 “JVM 选项”,对应IDE中的 VM options,可用jps -v 查看。
- [args] 部分是指 “传递给main函数的参数”,对应IDE中的 Program arguments,可用 jps -m 查看。
如果是使用Tomcat 之类自带startup.sh 等启动脚本的程序,我们一般把相关参数都放到一个脚本定义的JAVA_OPTS环境变量中,最后脚本启动JVM时会把JAVA_OPTS变量里的所有的参数都加到命令的合适位置。
如果是在IDE之类的运行的话,则可以在 “Run/Debug Configurations” 里看到 VM 选项和程序参数两个可以输入参数的地方,直接输入即可。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yHLDZyaK-1597206825888)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20200812112946906.png)]
上图输入了两个VM 参数,都是环境变量,一个是指定文件编码使用UTF-8,一个是设置了环境变量a的值为1.
Java 和 JDK 内置的工具,指定参数时都是一个 - ,不管是长参数还是短参数。
JVM 的启动参数:
- 以 - 开头为标准参数,所有的JVM 都要实现这些参数,并且向后兼容
- 以 -X 开头为非标准参数,基本都是传给JVM 的,默认 JVM实现这些参数的功能,但是并不保证所有JVM 实现都满足, 且不保证向后兼容
- 以 -XX 开头为非稳定长参数,专门用于控制 JVM 的行为,跟及具体的JVM 实现有关,随时可能会在下个版本取消
- -XX: ± Flags 形式,±是对布尔值进行开关
- -XX: key=value 形式,指定某个选项的值
实际上,直接在命令行输入java,然后回车,就会看到java命令可以使用的参数列表说明:
用法: java [-options] class [args...]
(执行类)
或 java [-options] -jar jarfile [args...]
(执行 jar 文件)
其中选项包括:
-d32 使用 32 位数据模型 (如果可用