我必须在我们的应用程序API中做一些性能调优,并且我一直在研究关于堆大小和Gargabe集合的JVM标志。然而,我经常发现自己在许多不同的文档中,有时我会以WebLogic服务器、文档或其他企业版的java docs系统告终。
我考虑过测试所有JVM的通用标志,我看到其中一些标志更常见,几乎在所有JVM中都存在,而有些标志更具体,比如-XX标记,更具有JVM的特性。
我的猜测是这个https://openjdk.java.net/groups/hotspot/是答案,但我想知道是否有更多的具体信息。我在家里运行了一个命令(不是我工作时的应用程序,但结果似乎是一样的,除了java版本),以便在一个进程中在家里获得一些信息,只是比较一下:
root@xxxx:/home/xxxx# jcmd 6134 VM.system_properties > log.out
root@xxxx:/home/xxxx# cat log.out | grep vm
java.vm.vendor=Ubuntu
java.vm.specification.version=11
sun.boot.library.path=/usr/lib/jvm/java-11-openjdk-amd64/lib
java.home=/usr/lib/jvm/java-11-openjdk-amd64
java.vm.compressedOopsMode=Zero based
java.vm.specification.vendor=Oracle Corporation
java.vm.name=OpenJDK 64-Bit Server VM
java.vm.specification.name=Java Virtual Machine Specification
java.vm.info=mixed mode, sharing
java.vm.version=11.0.11+9-Ubuntu-0ubuntu2.18.04
root@xxxx:/home/xxx# 正如您所看到的,它只是声明OpenJDK 64位服务器VM,作为jvm名称。如果我试图在谷歌上搜索这些标志,它就会回到HotSpot,因此我对此表示怀疑。
我已经使用了列出所有JVM标志的命令来查看选项,所以这已经是一件好事。不过,官方文档也不错,我一直在使用不同的JVM规范,希望标志的含义是一样的,但它确实让我感到我不知道自己在做什么。
所以,也许是TL:DR: OpenJDK 64位服务器VM可以解释为HotSpot JVM,还是应该在其他地方查找它的文档?
发布于 2021-08-08 00:26:05
tl;dr
JDK有不同的JVM实现(HotSpot、OpenJ9、GraalVM),以及具有不同调优选项的不同垃圾收集器实现(Z垃圾收集器(ZGC)、垃圾优先(G1)、谢南多、并发标记扫描(CMS)、串行收集器、并联收集器等)。
HotSpot & OpenJ9
有两种用于通用Java工作的JVM实现:
这两种JVM都很优秀,而且都得到了很好的证明。至于比较,评论员经常提到OpenJ9在初始内存需求较少的情况下启动速度更快,而随着时间的推移,HotSpot可能更适合于执行。但是做你自己的研究来选择。记住,你在比较苹果和苹果,而不是苹果和桔子。

许多JDK发行版可以从几家供应商获得,包括Azul系统、Red /IBM、SAP、微软、甲骨文、Pivotal、BellSoft、亚马逊等。有些供应商使用HotSpot,有些使用OpenJ9。有些人两者兼而有之,允许你做出选择。例如,下面是来自AdoptOpenJDK a.k.a的屏幕截图。提供HotSpot或OpenJ9的选择。

至于如何识别运行时使用的内容,我无法帮助。
OpenJDK项目
顺便说一句,请理解OpenJDK项目涵盖了许多子项目。HotSpot只是几个子项目之一。我们所知道的Java的核心图书馆的一个实现是另一个子项目。其他子项目正在准备技术,如巴拿马项目和工程织机。
提供JDK构建/安装程序的供应商可以自由选择这些部件。供应商可以选择使用OpenJDK子项目的核心库,以及的OpenJ9 JVM。
还要了解,OpenJDK项目只为JDK的这些部分提供了原始源代码。OpenJDK项目不提供构建/安装程序。查看上面提到的其他供应商的版本/安装程序。
Oracle限制访问“Java”的名称和徽标的商标。相反,Oracle提供了对术语“OpenJDK”的简单访问,用于命名基于OpenJDK代码基的构建和安装程序。许多由不同供应商发布的JDK产品的名称中都有" OpenJDK“,但这意味着它们是基于OpenJDK代码基的,而不是OpenJDK项目- a提供的构建/安装程序微妙但重要的区别。
GraalVM
现在进入自己的JVM的另一个是https://en.wikipedia.org/wiki/GraalVM。这个JVM是特殊的。功能包括:
发布于 2021-08-12 13:37:40
对于许多JVM,chriswhocodes.com上有一个非常全面的选项列表。例如,Hotspot是从版本6到18覆盖的,这是一个非常好的一站式网站。
https://stackoverflow.com/questions/68696827
复制相似问题