Perbedaan antara mode klien JVM dan mode server
Perbedaan utama antara mode server JVM dan mode klien adalah bahwa ketika memulai: - Mode server lambat saat memulai, tetapi begitu dimulai, kinerjanya akan sangat ditingkatkan.
JVM dapat sangat meningkatkan kinerja saat bekerja dalam mode server. Kecepatan startup aplikasi dalam mode server akan sekitar 10% lebih lambat dari mode klien, tetapi kecepatan berjalan setidaknya 10 kali lebih cepat dari klien VM.
Ketika parameter mode berjalan tidak ditentukan, mesin virtual mulai mendeteksi apakah host adalah server. Jika demikian, itu akan dimulai dalam mode server. Kalau tidak, itu akan dimulai dalam mode klien. Dasar untuk deteksi J2SE5.0 adalah setidaknya 2 CPU dan memori minimal 2GB.
Karena CPU server, memori dan hard disk lebih kuat dari mesin klien, setelah program digunakan, itu harus dimulai dalam mode server untuk mendapatkan kinerja yang lebih baik;
JVM default ke -xms adalah 1m, -xmx adalah 64m dalam mode klien; JVM default ke -xms adalah 128m, -xmx adalah 1024m dalam mode server;
Server: Startup lambat dan kompilasi yang lebih lengkap. Kompiler adalah kompiler adaptif dengan efisiensi tinggi dan dirancang untuk mengoptimalkan aplikasi sisi server dan memaksimalkan kecepatan eksekusi program di lingkungan server.
Klien: Startup cepat, penggunaan memori rendah, kompilasi cepat, dioptimalkan untuk aplikasi desktop, dioptimalkan untuk mengurangi waktu startup di lingkungan klien;
Ketika JVM digunakan untuk memulai aplikasi interaktif antarmuka GUI, disarankan untuk menggunakan mode klien ketika JVM digunakan untuk menjalankan program latar belakang server.
Kita dapat memeriksa mode apa yang berfungsi dengan JVM dengan menjalankan: java -version.
Tentang GCC pada Gambar 1
Dalam mode klien, generasi baru memilih serial GC, sedangkan generasi lama memilih serial gc, sedangkan generasi lama memilih serial gc
Dalam mode server, generasi baru memilih daur ulang paralel GC, sedangkan generasi lama memilih GC paralel.
Secara umum, ada dua cara untuk memilih aplikasi sistem kami: prioritas throughput dan jeda prioritas waktu. Untuk prioritas throughput, metode GC paralel default server diadopsi, dan untuk prioritas waktu jeda, metode GC (CMS) bersamaan diadopsi.
Poin Pengetahuan Diperpanjang Lainnya
JDK memiliki dua jenis aplikasi VM, VM Client, dan VM Server. Kedua solusi berbagi basis kode hotspot dari lingkungan runtime Java, tetapi menggunakan kompiler yang berbeda, fitur kinerja unik untuk klien dan server, dengan perbedaan termasuk menulis kebijakan inline dan nilai default untuk tumpukan.
Meskipun server mirip dengan mesin virtual klien, server VM telah secara khusus menyesuaikan kecepatan operasi puncak maksimum. Tujuannya adalah untuk menjalankan aplikasi server yang berjalan lama, yang membutuhkan kecepatan lari tercepat melebihi waktu startup yang cepat atau jejak memori runtime yang lebih kecil.
Kompiler VM Client adalah mesin virtual klasik dan kompiler yang digunakan oleh Real-Time Upgrade (JIT) melalui versi JDK sebelumnya. Mesin virtual klien menyediakan kinerja yang lebih baik untuk menjalankan aplikasi dan applet. Hotspot Java Virtual Machines Pelanggan telah mengurangi waktu startup dan penggunaan memori aplikasi untuk membuatnya sangat cocok untuk lingkungan pelanggan. Secara umum, sistem klien memiliki antarmuka pengguna grafis yang lebih baik.
Jadi perbedaan sebenarnya juga pada tingkat kompiler:
Kompiler mesin virtual klien tidak berusaha melakukan optimasi yang lebih kompleks yang dilakukan oleh kompiler pada mesin virtual server, tetapi selama pertukaran dibutuhkan lebih sedikit waktu untuk menganalisis dan menyusun sepotong kode. Ini berarti bahwa mesin virtual klien dapat memulai lebih cepat dan membutuhkan jejak memori yang lebih kecil.
Mesin virtual server berisi kompiler adaptif canggih yang mendukung banyak optimasi kompiler C ++ untuk optimasi, jenis yang sama, dan beberapa optimasi yang tidak dapat dilakukan dengan kompiler tradisional, seperti panggilan metode virtual yang diinlinasikan secara aktif. Ini adalah keunggulan kompetitif dan kinerja, kompiler statis. Teknik optimasi adaptif sangat fleksibel dalam pendekatannya dan biasanya lebih unggul daripada analisis statis dan teknik kompilasi canggih.
Saat memulai mode -server, kecepatannya lambat, tetapi setelah dijalankan, kinerjanya akan sangat ditingkatkan. Alasannya adalah bahwa ketika mesin virtual dalam mode -klien, ia menggunakan C1 Compiler yang ringan, sementara mesin virtual dimulai dalam mode -server menggunakan C2 yang relatif berat dengan kode C2. C2 relatif disusun secara menyeluruh daripada kompiler C1, dan setelah disajikan, ia memiliki kinerja yang lebih tinggi.
Secara umum, cukup ubah urutan dua konfigurasi -server yang dikenal dan -klien diketahui, selama direktori java_home/jre/bin ada pada saat yang sama, sesuai dengan JVM masing -masing
Setelah banyak mengatakan, saya benar -benar menyimpulkan dalam satu kalimat:
Aplikasi dimulai secara perlahan tetapi berjalan lebih cepat dalam mode server JVM, sementara aplikasi dimulai dengan cepat tetapi berjalan lebih cepat dalam mode klien JVM.
Dianjurkan: Harap jalankan dalam mode server di server, dan jalankan dalam mode klien dalam mode klien atau mode GUI.