默认启动 java 服务器虚拟机

Launch java server vm by default

我的机器上同时安装了客户端 VM 和服务器 VM。

$java-客户端-版本
Java HotSpot(TM) 客户端虚拟机

$java-服务器-版本
Java HotSpot(TM) 服务器虚拟机

默认使用客户端虚拟机:
$ java -版本
Java HotSpot(TM) 客户端虚拟机

我正在尝试启动一些 java 应用程序(如 glassfish、teamcity、upsource 等),其中 none 次启动,因为它们无法打开监听连接,因为它们由客户端 VM 启动,所以我想我需要默认设置 java 服务器 VM。

有人知道怎么做吗?

这取决于你的硬件和操作系统。有关概述,请查看此处: Server-Class Machine Detection

我不知道您使用的是哪种启动器,但这些应用程序 运行 在客户端 JVM 上的可能性很小,因为默认情况下它们的启动器通常 select 服务器 JVM。

但是,您被名称误导了,因为这些 JVM 类型与应用程序是否可以打开侦听连接的问题无关。这两个 JVM 形状只是改变了有关性能的行为。简而言之,服务器 JVM 针对长 运行 应用程序进行了优化,但这种差异无论如何在未来的 JVM 中都将消失,因此您将永远不必再担心“服务器”与“客户端”JVM。

所以如果你的应用无法开启监听端口,可能的原因有

  • 操作系统不允许(例如,某些端口可能需要管理员权限)
  • JRE 的 SecurityManager 不允许(由于其政策)
  • 该端口已被使用

但这并不是因为您的 JVM 是所谓的“客户端”JVM。