Java'nın iki VM'si hakkında özet: Sunucu ve İstemci
--------------------------------------------------------------------kendimden----------------------------------------------------------------------- Şu anda sadece 64-bit sunucu modunu destekliyor
Server VM'leri, istemci VM'lere göre yaklaşık %10 daha yavaş başlar.İstemci VM'den en az 10 kat daha hızlı çalışır; Sunucunun CPU, belleği ve sabit diski istemci makineden daha güçlü olduğundan, program dağıtıldıktan sonra sunucu modunda başlatılarak daha iyi performans elde edilmelidir. JVM, istemci modunda varsayılan olarak 1M, -Xmx için ise 64M olur. JVM, Sunucu modunda varsayılan olarak 128M, -Xmx için ise 1024M olarak belirlenir.
server:启动慢,编译更完全,编译器是自适应编译器,效率高,针对服务端应用优化,在服务器环境中最大化程序执行速度而设计。
client:快速启动,内存占用少,编译快,针对桌面应用程序优化,为在客户端环境中减少启动时间而优化; GC hakkında: Clien modunda, yeni nesil seri GC'yi seçerken, eski nesil seri GC'yi seçer Sunucu modunda, yeni nesil paralel geri dönüşümlü GC'yi seçerken, eski nesil paralel GC'yi seçer Genel olarak, sistem uygulamamızı seçmenin iki yolu vardır: aktarım süresi önceliği ve duraklatma süresi önceliği, aktarım önceliği için sunucunun varsayılan paralel GC modu kullanılır ve duraklatma süresi önceliği için eşzamanlı GC (CMS) modu seçilir.
--------------------------------------------------------------------tarayıcıdan------------------------------------------------------------------------- JDK'nın iki tür VM vardır: VM istemcisi, VM sunucu uygulamaları. İki çözüm, Java çalışma zamanının hotspot kod tabanını paylaşır, ancak hem istemci hem sunucu için benzersiz performans özellikleri için farklı derleyiciler kullanır ve bu farklılıklar arasında hat içi politikalar ve heap varsayılan yazma da bulunur.
Sunucular ve istemci VM'ler benzer olsa da, sunucu VM'leri özellikle maksimum maksimum çalışma hızları için ayarlanmıştır. Uzun süredir çalışan ve hızlı başlatma süresi veya küçük çalışma zamanı bellek alanının ötesinde en yüksek çalışma hızına sahip sunucu uygulamalarını çalıştırmak için tasarlanmıştır.
Müşteri VM Derleyicisi, klasik sanal makineler ve JDK'nın önceki sürümleri aracılığıyla gerçek zamanlı yükseltmeler (JIT) tarafından kullanılan bir derleyicidir. İstemci sanal makineler, çalıştırılan uygulamalar ve appletler için daha iyi performans sağlar. Java Sanal Makineleri'nin hotspot müşterileri, uygulama başlatma süresi ve bellek izini azaltacak şekilde özel olarak ayarlanmış, böylece müşteri ortamları için özellikle uygun hale getirilmiştir. Genel olarak, istemci sistemi daha iyi bir grafiksel kullanıcı arayüzüne sahiptir.
Yani gerçek fark derleyici seviyesinde de var:
İstemci sanal makine derleyicisi, derleyicinin sunucu sanal makinesinde yaptığı daha karmaşık optimizasyonları gerçekleştirmeye çalışmaz, ancak değişim sırasında bir kod parçasını analiz edip derlemek daha az zaman alır. Bu, istemci sanal makinelerin daha hızlı çalışabileceği ve daha küçük bir bellek alanı gerektirebileceği anlamına gelir.
Sunucu sanal makinesi, aynı tür optimizasyon için birçok C++ derleyici optimizasyonunu destekleyen gelişmiş adaptif bir derleyici içerir; ayrıca geleneksel derleyicilerle yapılamayan bazı optimizasyonları, örneğin sanal metod çağrılarında agresif inline çağrılar gibi. Statik derleyici rekabetçi ve performans avantajı. Uyarlanabilir optimizasyon teknikleri yaklaşımlarında çok esnektir ve çoğu zaman gelişmiş statik analiz ve derleme tekniklerinden bile üstün olur.
-Server modu başladığında hız yavaştır, ancak çalıştığında performans büyük ölçüde artar; çünkü: sanal makine -İstemci modundayken C1 kod adlı hafif bir derleyici kullanır ve -Server modunda başlatılan sanal makine, C1 derleyicisinden nispeten kapsamlı derlenmiş olan C2 kod adlı bir derleyici kullanır ve hizmet sonrası performans daha yüksektir.
Genel olarak, -sunucu BILINEN ve -istemci BILINEN iki yapılandırmanın sırasını değiştirdiğiniz sürece,Temel nokta, hem sunucu hem de istemci klasörlerinin /jre/bin dizininde bulunmasıdır JAVA_HOMEİlgili JVM'lerine karşılık geliyor
|