日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

JVM选项:-client vs -server

發布時間:2023/12/3 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JVM选项:-client vs -server 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

您是否曾經在運行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;i>0;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

總結

以上是生活随笔為你收集整理的JVM选项:-client vs -server的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。