Java 当服务器VM是默认选项时,为什么会有-server选项?

Java 当服务器VM是默认选项时,为什么会有-server选项?,java,jvm,Java,Jvm,java命令的帮助菜单显示-server选项用于选择“server”虚拟机。它还声明“服务器”是默认选项。为什么如此多余 编辑: 如果有任何帮助,“java-version”将产生: 在大多数JVM版本中,-server模式可能是默认模式,但也有例外。根据文件: 客户端和服务器系统都是通过32位Solaris和Linux下载来下载的。对于32位Windows,如果您下载JRE,则只获得客户端,您需要下载SDK才能获得这两个系统 对于64位,仅包括服务器系统。在Solaris上,64位JRE是32

java
命令的帮助菜单显示
-server
选项用于选择“server”虚拟机。它还声明“服务器”是默认选项。为什么如此多余

编辑:

如果有任何帮助,“java-version”将产生:


在大多数JVM版本中,
-server
模式可能是默认模式,但也有例外。根据文件:

客户端和服务器系统都是通过32位Solaris和Linux下载来下载的。对于32位Windows,如果您下载JRE,则只获得客户端,您需要下载SDK才能获得这两个系统

对于64位,仅包括服务器系统。在Solaris上,64位JRE是32位发行版之上的覆盖。然而,在Linux和Windows上,它是一个完全独立的发行版


在一天结束时,您可以使用
-client
切换回客户端模式,并牺牲JIT优化以加快启动时间。

在大多数JVM版本中,
-server
模式可能是默认模式,但也有例外。根据文件:

客户端和服务器系统都是通过32位Solaris和Linux下载来下载的。对于32位Windows,如果您下载JRE,则只获得客户端,您需要下载SDK才能获得这两个系统

对于64位,仅包括服务器系统。在Solaris上,64位JRE是32位发行版之上的覆盖。然而,在Linux和Windows上,它是一个完全独立的发行版


在一天结束时,您可以使用
-client
切换回客户机模式,并牺牲JIT优化来加快启动时间。

我不知道您的java版本,IMHO,在java8或更早的版本中,对于不同的平台(不同的体系结构和操作系统,甚至不同的cup内核和内存),有不同的默认JVM(服务器或客户端)

这张照片是从中拍摄的,我们可以看到java6的情况

(注意:对于JavaSE6,服务器类机器的定义是至少有2个CPU和至少2GB的物理内存。)

更新:


我只能确认java8(1.8.0121)也提供了这些选项。不确定java9或更高版本。

我不知道您的java版本,IMHO,在java8或更高版本中,对于不同的平台(不同的体系结构和操作系统,甚至不同的cup内核和内存),有不同的默认JVM(服务器或客户端)

这张照片是从中拍摄的,我们可以看到java6的情况

(注意:对于JavaSE6,服务器类机器的定义是至少有2个CPU和至少2GB的物理内存。)

更新:


我只能确认java8(1.8.0_121)也提供了这些选项。不确定是否使用java9或更高版本。

-client
-server
在现代JVM上被忽略,这很简单。有两个
JIT
编译器
C1
C2
,但有5层,所有细节都在注释中


这些标志用于控制
C1
C2
的动作方式-禁用或不禁用;现在由另外两个标志控制:
XX:-tieredcomployment
-
XX:TieredStopAtLevel=1
-client
-server
在现代JVM上被忽略,这很简单。有两个
JIT
编译rs
C1
C2
,但有5层,整个荣耀中的所有细节都在评论中


这些标志用于控制
C1
C2
的动作方式-禁用或不禁用;这现在由另外两个标志控制:
XX:-tieredcomployment
-
XX:TieredStopAtLevel=1

如果环境在多核cpu和ram大小方面满足某些特定要求,则-server选项是默认的。具体来说,我可以记住2gb ram的一些内容,但这可能在最近的java版本中发生了变化。SAFAIK只有在环境满足多核cpu和ram大小方面的特定要求时,-server选项才是默认选项。具体来说,我可以记住2gb ram的一些内容,但在最近的java版本中可能发生了变化。这是plai错了,现代jvm中的这些标志在我的帖子中被忽略了。通过sying
modern
jvm,你是指java9还是更高版本?我必须搜索代码库才能给你一个准确的答案,但我非常确定,至少java-8和仅供参考,oracle网站上的那些页面经常会出现错误,而不是及时更新,所以o你刚刚贴出来。它实际上意味着java-6,但链接包含java-8…顺便说一句,这不是第一次了。注意Stuart Marks在网站上也承认了这个错误。这是完全错误的,现代jvm中的这些标志在我的帖子中被忽略了。通过sying
modern
jvm,你是指java9还是更高版本?我会的搜索代码库以获得准确答案,但我非常确定,由于java-8至少并仅供参考,oracle网站上的这些页面经常会出现错误,而不是及时更新,所以您刚刚发布的页面也是如此。它实际上意味着java-6,但链接中包含java-8…顺便说一句,这不是第一次,这里是和.noticee Stuart Marks如何在网站上承认这个错误,链接看起来像是一个非常旧的和破损的“自java-5”…无论如何,这些
-server
-client
也是旧的参数,被忽略了,因此这是不正确的,链接看起来像是一个非常旧的和破损的“自java-5”…无论如何,这些
-server
-client
也是旧参数,被忽略了,因此这是不正确的注:虽然@Karol-Dowbecki的答案解决了我的问题,但这个答案告诉我应该看什么。如果可以的话,我真的很想接受这两个参数:(注:尽管@Karol-Dowbecki的答案)
java version "1.8.0_191"
Java(TM) SE Runtime Environment (buil 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)