可能重複:
Real differences between "java -server" and "java -client"?Java客戶端虛擬機和服務器虛擬機有什麼區別?
什麼是開始 - 服務器,並與-client標誌的Java程序之間的技術差異?
謝謝!
可能重複:
Real differences between "java -server" and "java -client"?Java客戶端虛擬機和服務器虛擬機有什麼區別?
什麼是開始 - 服務器,並與-client標誌的Java程序之間的技術差異?
謝謝!
從Frequently Asked Questions About the Java HotSpot VM:
這兩個系統是不同的二進制文件。它們本質上是兩個連接到相同運行時系統的不同編譯器(JIT)。 客戶端系統適用於需要快速啓動 次或小佔用空間的應用程序,服務器系統最適合於整體性能最重要的應用程序。在通常情況下,客戶端系統更適合於交互式應用,例如圖形用戶界面。其他一些差異包括 編譯策略,堆默認值和內聯策略。
一個區別,我知道的是有關JIT (Just In Time)
編譯其中在JVM運行時在代碼識別熱點和基於該字節碼轉換成高度優化的本地代碼。
對於-client
標誌,JIT'ing的執行量少於-server
標誌執行的量。這是因爲客戶是通常需要低啓動時間的交互式應用程序,而JIT會導致一些啓動延遲。您可以在這裏閱讀更多關於JIT的信息:http://en.wikipedia.org/wiki/Just-in-time_compilation
另外,我認爲(不是很確定)在這些標誌的變化中選擇的垃圾收集默認值會有一些差異。