通过理解和使用 JVM 以及 JVM 参数,开发人员和最终用户都可以诊断故障并且提高 Java 应用程序的性能。
当你在编写源代码时,你是在编写人类可以阅读的代码。在将代码编译成机器语言之前,计算机无法执行它。机器语言是一个通用术语,指的是特定机器所需的任意数量的语言。通常,如果你在 Linux 上编译代码,它只能 Linux 上运行;如果你在 Windows 上编译代码,它就只在 Windows 上运行。但是,Java 是不同的,它并不以真实的机器为目标,而是面向 Java 虚拟机 (JVM)。因此,它可以在任何机器上运行。
Java 源代码被编译成 字节码 ,然后由安装在计算机上的 JVM 运行。JVM 是一个执行引擎,但我们通常不会直接与它交互。它在后台静默运行,替我们处理 Java 字节码。大多数人不需要考虑,甚至也不需要知道 JVM。但是,了解它的工作原理是对我们来说是非常有用的,因为这会有助于我们调试和优化 Java 代码。例如:
- 在生产环境中,你发现已经部署的应用程序可能需要提升性能。
- 如果你写的应用程序出错了,开发人员和最终用户都可以选择对问题进行调试。
- 如果你想了解关于 JDK(即 Java 开发工具包 ,用于开发/运行 Java 应用程序)的详细信息,你可以通过查询 JVM 来获取。
本文介绍了一些基础的 JVM 参数,希望在这些场景中可以提供帮助。
(图源:Jayashree Huttanagoudar,CC BY-SA 4.0)
JVM、JDK 和 JRE 有什么不同?
Java 有许多 J 开头的缩略词,包括 JVM、JDK 和 JRE。
- Java 开发工具包 (JDK)可供需要在代码中使用开发库的程序员使用。
- Java 运行时环境 (JRE)可供想运行 Java 应用程序的人使用。
- Java 虚拟机 (JVM)是运行 Java 字节码的组件。
JDK 同时包含 JRE 和 JVM,但有些 Java 发行版提供了包含 JRE(包括 JVM)的替代下载。
(图源:Jayashree Huttanagoudar,CC BY-SA 4.0)
Java 是开源的,因此,许多不同的公司都会构建和发行他们自己的 JDK 发行版。你可以在系统上安装多个 JDK,这会对你参与或者运行不同的 Java 项目时很有帮助,因为其中一些项目可能使用旧版本的 JDK。
你可以使用 alternatives
命令,来查看 Linux 系统上的 JDK 列表:
$ alternatives --config java
There are 2 programs that provide java.
Selection Command
via: <https://opensource.com/article/22/4/jvm-parameters-java-developers>
作者:[Jayashree Huttanagoudar](https://opensource.com/users/jayashree-huttanagoudar) 选题:[lkxed](https://github.com/lkxed) 译者:[Veryzzj](https://github.com/Veryzzj) 校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
发表回复