Java Sanal Makinesi - Derleme Düzeyleri
JVM, beş derleme düzeyini destekler -
- Interpreter
- Tam optimizasyonlu C1 (profil oluşturma yok)
- Çağırma ve arka kenar sayaçları ile C1 (ışık profili oluşturma)
- Tam profilli C1
- C2 (önceki adımlardaki profilleme verilerini kullanır)
Tüm JIT derleyicilerini devre dışı bırakmak ve yalnızca yorumlayıcı kullanmak istiyorsanız -Xint kullanın.
İstemci ve Sunucu JIT Karşılaştırması
İlgili modları etkinleştirmek için -client ve -server'ı kullanın.
İstemci derleyici (C1) kodu derlemeye sunucu derleyicisinden (C2) daha erken başlar. Dolayısıyla, C2 derlemeye başladığında, C1 zaten kod bölümlerini derlemiş olacaktı.
Ancak beklerken C2, kodu C1'den daha fazla bilmek için profiller. Bu nedenle, optimizasyonlarla dengelenmesi durumunda beklediği süre çok daha hızlı bir ikili oluşturmak için kullanılabilir. Bir kullanıcının bakış açısından, takas, programın başlangıç zamanı ile programın çalışması için geçen süre arasındadır. Başlatma süresi premium ise, C1 kullanılmalıdır. Uygulamanın uzun bir süre çalışması bekleniyorsa (tipik olarak sunuculara yerleştirilen uygulamalar), herhangi bir ekstra başlatma süresini büyük ölçüde dengeleyen çok daha hızlı kod ürettiği için C2'yi kullanmak daha iyidir.
IDE'ler (NetBeans, Eclipse) ve diğer GUI programları gibi programlar için başlatma süresi kritiktir. NetBeans'in başlaması bir dakika veya daha uzun sürebilir. NetBeans gibi programlar başlatıldığında yüzlerce sınıf derlenir. Bu gibi durumlarda, C1 derleyicisi en iyi seçimdir.
C1'in iki sürümü olduğunu unutmayın - 32b and 64b. C2 sadece gelir64b.
Katmanlı Derleme
Java'nın eski sürümlerinde, kullanıcı aşağıdaki seçeneklerden birini seçebilirdi -
- Tercüman (-Xint)
- C1 (-client)
- C2 (-server)
Java 7'de geldi. Başlamak için C1 derleyicisini kullanır ve kod ısındıkça C2'ye geçer. Aşağıdaki JVM seçenekleriyle etkinleştirilebilir: -XX: + TieredCompilation. Varsayılan değerset to false in Java 7, and to true in Java 8.
Beş derleme katmanından, katmanlı derleme kullanımları 1 -> 4 -> 5.