Java Virtual Machine - Tingkat Kompilasi
JVM mendukung lima tingkat kompilasi -
- Interpreter
- C1 dengan pengoptimalan penuh (tanpa profil)
- C1 dengan permintaan dan penghitung tepi belakang (profil ringan)
- C1 dengan profil lengkap
- C2 (menggunakan data profil dari langkah sebelumnya)
Gunakan -Xint jika Anda ingin menonaktifkan semua kompiler JIT dan hanya menggunakan interpreter.
Klien vs. Server JIT
Gunakan -client dan -server untuk mengaktifkan mode masing-masing.
Kompilator klien (C1) mulai mengkompilasi kode lebih cepat daripada kompilator server (C2). Jadi, pada saat C2 memulai kompilasi, C1 pasti sudah menyusun bagian-bagian kode.
Tapi sementara menunggu, C2 membuat profil kode untuk mengetahuinya lebih dari C1. Karenanya, waktu tunggu jika diimbangi dengan pengoptimalan dapat digunakan untuk menghasilkan biner yang jauh lebih cepat. Dari perspektif pengguna, trade-off adalah antara waktu startup program dan waktu yang dibutuhkan untuk menjalankan program. Jika waktu startup adalah premium, maka C1 harus digunakan. Jika aplikasi diharapkan berjalan untuk waktu yang lama (tipikal aplikasi yang diterapkan pada server), lebih baik menggunakan C2 karena ia menghasilkan kode yang jauh lebih cepat yang sangat mengimbangi waktu startup tambahan.
Untuk program seperti IDE (NetBeans, Eclipse) dan program GUI lainnya, waktu startup sangat penting. NetBeans mungkin membutuhkan waktu satu menit atau lebih untuk memulai. Ratusan kelas dikompilasi saat program seperti NetBeans dimulai. Dalam kasus seperti itu, compiler C1 adalah pilihan terbaik.
Perhatikan bahwa ada dua versi C1 - 32b and 64b. C2 hanya masuk64b.
Kompilasi Bertingkat
Dalam versi yang lebih lama di Java, pengguna dapat memilih salah satu dari opsi berikut -
- Penerjemah (-Xint)
- C1 (-klien)
- C2 (-server)
Itu datang di Java 7. Ia menggunakan compiler C1 untuk startup, dan ketika kode semakin panas, beralih ke C2. Ini dapat diaktifkan dengan opsi JVM berikut: -XX: + TieredCompilation. Nilai defaultnya adalahset to false in Java 7, and to true in Java 8.
Dari lima tingkatan kompilasi, menggunakan kompilasi berjenjang 1 -> 4 -> 5.