默认启动 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。
我的机器上同时安装了客户端 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。