Ini benar-benar terkait dengan Hotspot dan default nilai opsi ( Java HotSpot VM Options ) yang berbeda antara klien dan konfigurasi server.
Dari Bab 2 whitepaper ( The Java HotSpot Performance Engine Architecture ):
JDK mencakup dua rasa VM - penawaran sisi klien, dan VM yang disetel untuk aplikasi server. Dua solusi ini berbagi basis kode lingkungan runtime Java HotSpot, tetapi menggunakan kompiler yang berbeda yang cocok dengan karakteristik kinerja klien dan server yang unik. Perbedaan-perbedaan ini termasuk kompilasi kebijakan inlining dan heap default.
Meskipun Server dan VM Klien serupa, Server VM telah disesuaikan untuk memaksimalkan kecepatan operasi puncak. Ini dimaksudkan untuk mengeksekusi aplikasi server yang sudah berjalan lama, yang membutuhkan kecepatan operasi secepat mungkin lebih dari waktu start-up cepat atau jejak memori runtime yang lebih kecil.
Kompiler VM Klien berfungsi sebagai pemutakhiran untuk kedua VM Klasik dan kompiler just-in-time (JIT) yang digunakan oleh versi JDK sebelumnya. VM Klien menawarkan peningkatan kinerja run time untuk aplikasi dan applet. Java HotSpot Client VM telah disesuaikan secara khusus untuk mengurangi waktu permulaan aplikasi dan jejak memori, membuatnya sangat cocok untuk lingkungan klien. Secara umum, sistem klien lebih baik untuk GUI.
Jadi perbedaan sebenarnya juga ada pada level kompiler:
Kompiler VM Klien tidak mencoba untuk melakukan banyak optimasi yang lebih kompleks yang dilakukan oleh kompiler di Server VM, tetapi sebagai gantinya, memerlukan lebih sedikit waktu untuk menganalisis dan menyusun sepotong kode. Ini berarti VM Klien dapat memulai lebih cepat dan membutuhkan jejak memori yang lebih kecil.
Server VM berisi kompiler adaptif canggih yang mendukung banyak jenis optimisasi yang sama yang dilakukan dengan mengoptimalkan kompiler C ++, serta beberapa optimisasi yang tidak dapat dilakukan oleh kompiler tradisional, seperti inlining agresif di seluruh invokasi metode virtual. Ini adalah keunggulan kompetitif dan kinerja daripada kompiler statis. Teknologi optimisasi adaptif sangat fleksibel dalam pendekatannya, dan biasanya mengungguli bahkan analisis statis canggih dan teknik kompilasi.
Catatan: Rilis pembaruan jdk6 10 (lihat Perbarui Catatan Rilis: Perubahan pada 1.6.0_10 ) mencoba untuk meningkatkan waktu startup, tetapi untuk alasan yang berbeda dari opsi hotspot, dikemas secara berbeda dengan kernel yang jauh lebih kecil.
G. Demecki menunjukkan dalam komentar bahwa dalam versi JDK 64-bit, -client
opsi ini diabaikan selama bertahun-tahun.
Lihat perintah Windowsjava
:
-client
Memilih Java HotSpot Client VM.
JDK berkemampuan 64-bit saat ini mengabaikan opsi ini dan sebagai gantinya menggunakan Java Hotspot Server VM .