JIT derleyicisi
Just-In-Time (JIT) derleyicisi, çalıştırma zamanında bytecodes derleyerek yerel makine koduna derleyerek Java™ uygulamalarının performansını artıran bir yürütme ortamı bileşenidir.
Java programları, birçok farklı bilgisayar mimarisindeki bir JVM tarafından yorumlanabilen platform-nötr bytecodes içeren sınıflardan oluşur. Çalıştırma zamanında, JVM sınıf dosyalarını yükler, her bir tek byte kodunun anlambilimini belirler ve uygun hesaplamayı gerçekleştirir. Ek işlemci ve bellek kullanımı, yorumlama sırasında bir Java uygulamasının yerel uygulamadan daha yavaş bir şekilde gerçekleştireceği anlamına gelir. JIT derleyicisi, çalıştırma zamanında yerel makine kodu ile bytecodes derleyerek Java programlarının başarımını iyileştirmeye yardımcı olur.
JIT derleyicisi varsayılan olarak etkindir. Bir yöntem derlendiğinde, JVM bu yöntemin derlenmiş kodunu doğrudan yorumlamak yerine doğrudan çağırır. Teorik olarak, derleme işlemi için işlemci zamanı ve bellek kullanımı gerektirmiyorsa, her yöntemin derlenmesi Java programının hızının yerel bir uygulamayla eşleşmesine izin verebilir.
JIT derlemesi, işlemci süresi ve bellek kullanımı gerektirir. JVM ilk kez başlatıldığında, binlerce yöntem çağrılır. Bu yöntemlerin tümünü derlemek, program sonunda çok iyi bir performans gösterse bile, başlatma süresini önemli ölçüde etkileyebilir.
Uygulamada, yöntemler ilk çağrılırlarsa derlenmez. JVM, her bir yöntem için, önceden tanımlanmış bir derleme eşiği değerinde başlayan ve yöntemin çağrıldığı her zaman azaltılan bir çağırma sayısı sağlar. Çağırma sayısı sıfıra ulaştığında, yöntem için en çok zaman içi derleme tetiklenir. Bu nedenle, genellikle kullanılan yöntemler, JVM ' nin başlatılmasından hemen sonra derlenir ve daha az kullanılan yöntemler çok daha sonra derlenir ya da hiç değildir. JIT derleme eşiği, JVM ' nin hızlı bir şekilde başlamasına ve başarımı artırmasına yardımcı olur. Başlangıç zamanları ile uzun dönemli performans arasında en iyi dengeyi elde etmek için eşik değeri seçildi.
JIT derleyicisi, farklı eniyileme düzeylerindeki bir yöntemi derleyebilir: cold, warm, hot, veryHotya da scorching (bkz. -Xjitiçinde optlevel ). Daha yüksek optimizasyon düzeylerinin daha iyi performans sağlaması beklenir, ancak aynı zamanda CPU ve bellek açısından daha yüksek bir derleme maliyeti de vardır. Bir yönteme ilişkin ilk ya da varsayılan eniyileme düzeyi warm, ancak bazen JIT heuristics, başlatma süresini iyileştirmek için eniyileme düzeyini cold değerine indiriyor.
Bir yöntem, farklı mekanizmalar aracılığıyla daha yüksek bir eniyileme düzeyiyle yeniden derlenebilir. Bu mekanizmalardan biri örnekleme: JIT derleyicisi, düzenli aralıklarla uyanan ve yığın üzerinde hangi Java yöntemlerinin daha sık görüneceğini belirleyen özel olarak ayrılmış bir örnekleme iş parçacığının bakımını yapar. Bu tür yöntemlerin performans açısından daha önemli olduğu düşünülmektedir ve bunlar hot, veryHotya da scorching' ın daha yüksek düzeylerinde yeniden optimize edilmekte olan adaylardır.
JIT derleyicisini devre dışı bırakabilirsiniz; bu durumda, tüm Java programı yorumlanır. JIT derleyicisini geçersiz kılmak, JIT derleme sorunlarını tanılamak ya da bunların çevresinde çalışmak dışında önerilmez.