做外贸自己公司的网站一定要吗,做平面设计一般上哪个网站参考,凡科轻站小程序怎么样,淘宝小程序入口您是否曾经在运行Java应用程序时想知道-client或-server开关是什么#xff1f; 例如#xff1a; javaw.exe -client com.blogspot.sdoulger.LoopTest也显示在java.exe的“帮助”中#xff0c;例如#xff0c;其中的选项包括#xff1a; -client选择“客户端” VM -serv… 您是否曾经在运行Java应用程序时想知道-client或-server开关是什么 例如 javaw.exe -client com.blogspot.sdoulger.LoopTest 也显示在java.exe的“帮助”中例如其中的选项包括 -client选择“客户端” VM -server选择“服务器” VM -client和-server系统之间有什么区别 这两个系统是不同的二进制文件。 它们本质上是与同一运行时系统接口的两个不同的编译器JIT。 对于需要快速启动时间或较小占用空间的应用程序客户端系统是最佳选择对于整体性能最为重要的应用程序服务器系统是最佳选择。 通常客户端系统更适合于交互式应用程序例如GUI。 其他一些差异包括编译策略堆默认设置和内联策略。 根据“ Java HotSpot性能引擎架构 ” JDK包括两种VM客户端产品和为服务器应用程序调整的VM。 这两个解决方案共享Java HotSpot运行时环境代码库但是使用不同的编译器这些编译器适合于客户端和服务器的独特性能特性。 这些差异包括编译内联策略和堆默认值。 JDK在发行版中同时包含这两个系统因此开发人员可以通过指定-client或-server来选择所需的系统。 尽管服务器VM和客户端VM相似但已经对服务器VM进行了特殊调整以最大程度地提高峰值运行速度。 它用于执行长时间运行的服务器应用程序这些应用程序需要比快速启动时间或较小的运行时内存占用更多的最快的运行速度。 客户端VM编译器可作为经典VM和早期JDK版本使用的即时JIT编译器的升级。 客户端VM为应用程序和小程序提供了改进的运行时性能。 Java HotSpot客户端VM经过特别调整以减少应用程序启动时间和内存占用使其特别适合客户端环境。 通常客户端系统更适合GUI。 客户端VM编译器不会尝试执行服务器VM中由编译器执行的许多更复杂的优化但是作为交换它需要较少的时间来分析和编译一段代码。 这意味着客户端VM可以更快地启动并且需要较小的内存空间。 注意似乎性能差异的主要原因是优化的数量。 Server VM包含一个高级自适应编译器该编译器支持通过优化C 编译器执行的许多相同类型的优化以及一些传统编译器无法完成的优化例如跨虚拟方法调用的主动内联。 与静态编译器相比这是一个竞争优势和性能优势。 自适应优化技术的方法非常灵活通常甚至优于高级静态分析和编译技术。 两种解决方案都提供了极其可靠安全和可维护的环境可以满足当今企业客户的需求。 默认选项 对于热点是客户端 对于JRockit是服务器 JRockit的客户端和服务器VM选项 JRockit也有这两个选项默认为服务器选项热点是客户端。 JRockit客户端选项为-client服务器为-jrockit。 关于性能差异的动手实例 摘自Onkar Joshi博客的示例证明了性能差异。 我们使用两个开关运行以下代码 package com.blogspot.sdoulger;public class LoopTest {public LoopTest() {super();}public static void main(String[] args) {long start System.currentTimeMillis();spendTime();long end System.currentTimeMillis();System.out.println(Time spent: (end-start));LoopTest loopTest new LoopTest();}private static void spendTime() {for (int i 500000000;i0;i--) {}}
} 注意该代码仅被编译一次 两次运行中的类都相同 使用-client java.exe -client -classpath C\ JDeveloper \ mywork \ Test_java_client-server_switches \ Project1 \ classes com.blogspot.sdoulger.LoopTest 花费时间766 使用-server java.exe -server -classpath C\ JDeveloper \ mywork \ Test_java_client-server_switches \ Project1 \ classes com.blogspot.sdoulger.LoopTest 花费时间0 似乎是对服务器系统进行了更为积极的优化因此删除了循环因为它知道它不执行任何操作 挖掘更多/来源 -client和-server系统之间有什么区别 http://java.sun.com/products/hotspot/whitepaper.html#1 http://www.velocityreviews.com/forums/t130082-difference-between-client-server-classic-and-hotspot-jvms.html http://www.onkarjoshi.com/blog/174/hotspot-jvm-client-server-vm-optimization/ http://stackoverflow.com/questions/198577/real-differences-between-java-server-and-java-client 参考在Spyro的Log blog上 JCG合作伙伴 Spyros Doulgeridis提供的-client和-server JVM命令行选项之间的差异 。 相关文章 Java中的低GC使用原语而不是包装器 Java泛型快速教程 JVM如何处理锁 使用迭代器时如何避免ConcurrentModificationException 翻译自: https://www.javacodegeeks.com/2011/07/jvm-options-client-vs-server.html