2018-07-19 java -server

跑 Java 应用服务端程序时,都加个 -server 启动选项,什么作用呢?

直接问题 Java

man java

有明确说明:

 -server             Selects the Java HotSpot Server VM.  For more information see Server-Class Machine Detection at http://java.sun.com/j2se/1.5.0/docs/guide/vm/server-class.html

(这里要给 Java 团队提 BUG 了:明明在 JDK 8 上 man 的,给出的链接还是 JDK 5 的)

链接跳转至:https://docs.oracle.com/javase/1.5.0/docs/guide/vm/server-class.html

JDK 8 上也有相同的页面:https://docs.oracle.com/javase/8/docs/technotes/guides/vm/server-class.html

转述一下

Java HotSpot 有两类 JVM:server VM 和 client VM。

Server VM 为服务器端应用场景做了更多优化,可以显著提高运行时的性能,而这个优化需要更多的启动时间。-server 选项指定使用 server VM 来运行。

而对于一个典型的客户端应用,需要更快的启动速度,而且用不到这些基于服务端应用的优化时,那么就通过 -client 选项指定使用 client VM 来运行。

如果不指定,则使用默认。对照官方链接中的表格,可以看到:

对于我们常用的平台,只有 Windows 特殊一些,默认是 client VM。(也好理解,认为 Windows 平台上一般跑的还是桌面客户端应用)

x86 Linux 平台会自动检测,超过 2个 CPU 和 2GB 物理内存则启用 server VM。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,969评论 19 139
  • 从今天开始读《深入理解 Java 虚拟机》一书,并开设了同名专题 深入理解 Java 虚拟机。计划在 2 周内将全...
    SawyerZh阅读 10,267评论 17 215
  • /Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/Home...
    光剑书架上的书阅读 3,943评论 2 8
  • 车子穿行在水乡间的轨道上,望着窗外的建筑出了神:感觉以前的建筑物都非常有地方特色,火车越往南行,房子越漂亮...
    青青子衿66阅读 219评论 0 0
  • 有一个朋友小明向我吐槽,在公司有个关系还不错的同事小红,小红是负责HR的,基本小红如果向我这个朋友小明寻求帮助,他...
    神助阅读 746评论 0 1