JVM 技术详解:JVM 启动参数详解

JVM 作为一个通用的虚拟机,我们可以通过启动 Java 命令时指定不同的 JVM 参数,让 JVM 调整自己的运行状态和行为,内存管理和垃圾回收的 GC 算法,添加和处理调试和诊断信息等等。本节概括地讲讲 JVM 参数,对于 GC 相关的详细参数将在后续的 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 变量里的所有参数都加到命令的合适位置。

如果是在 IDEA 之类的 IDE 里运行的话,则可以在“Run/Debug Configurations”里看到 VM 选项和程序参数两个可以输入参数的地方,直接输入即可。

73146375.png

上图输入了两个 VM 参数,都是环境变量,一个是指定文件编码使用 UTF-8,一个是设置了环境变量 a 的值为 1。

Java 和 JDK 内置的工具,指定参数时都是一个 -,不管是长参数还是短参数。有时候,JVM 启动参数和 Java 程序启动参数,并没必要严格区分,大致知道都是一个概念即可。

JVM 的启动参数, 从形式上可以简单分为:

  • -开头为标准参数,所有的 JVM 都要实现这些参数,并且向后兼容。
  • -X开头为非标准参数, 基本都是传给 JVM 的,默认 JVM 实现这些参数的功能,但是并不保证所有 JVM 实现都满足,且不保证向后兼容。
  • -XX:开头为非稳定参数, 专门用于控制 JVM 的行为,跟具体的 JVM 实现有关,随时可能会在下个版本取消。
  • -XX:+-Flags 形式, +- 是对布尔值进行开关。
  • -XX:key=value 形式, 指定某个选项的值。

实际上,直接在命令行输入 java,然后回车,就会看到 java 命令可以其使用的参数列表说明:

你可能感兴趣的:(JVM 技术详解:JVM 启动参数详解)