java - 默认启动java服务器vm

标签 java jvm

我的计算机上同时有客户端虚拟机和服务器虚拟机。

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

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

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

我正在尝试启动一些java应用程序(如glassfish、teamcity、upsource等),但这些应用程序都没有启动,因为它们无法打开监听连接,因为它们是由客户端VM启动的,所以我认为我需要默认设置java Server VM。

有人知道怎么做吗?

最佳答案

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

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

因此,如果您的应用程序无法打开端口进行监听,可能的原因是

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

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

关于java - 默认启动java服务器vm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28720269/

相关文章:

java - 将http post请求转为http get

java - Predictionio pio 构建成功,但 pio 训练错误,未找到 'name'

java - 代码在我的计算机上运行良好,但在 "hackerearth"平台上在线运行时出现 NullPointerException

java - JVMTI _jclass toString

java - eclipse.ini 是用于我从 Eclipse 编译和启动的 Java 应用程序还是用于 IDE 本身?

java - 元空间和运行时常量池在 JVM 内存中的哪里?

java - 指向结构体数组的指针

java - 创建简单的 Maven 项目时出现错误

java - 如何在 Ubuntu 中为 JNI C/C++ 库查找 JDK 目录

java - 使用 Caliper 对正则表达式进行微基准测试