Inlining, Java Just-In-Time derleyicisi tarafından gerçekleştirilen bir optimizasyondur.
Eğer bir yöntemi varsa:
public int addPlusOne(int a, int b) {
return a + b + 1;
}
böyle diyoruz:
public void testAddPlusOne() {
int v1 = addPlusOne(2, 5);
int v2 = addPlusOne(7, 13);
// do something with v1, v2
}
derleyici fonksiyon gövdesinde ile işlev çağrısını yerine karar verebilir, bu nedenle sonuç olurdu etkin olarak şu şekilde görün:
public void testAddPlusOne() {
int v1 = 2 + 5 + 1;
int v2 = 7 + 13 + 1
// do something with v1, v2
}
Derleyici bu ek yükü kaydetmek için yapar f aslında her bir parametreyi yığına yerleştirmeyi gerektiren bir işlev çağrısı yapmak.
Bu, yalnızca sanal olmayan işlevler için açıkça yapılabilir. Yöntem bir alt sınıfta geçersiz kılındığında ve yöntemi içeren nesnenin türü çalışma zamanına kadar bilinmezse ne olacağını düşünün ... derleyici hangi kodu kopyalamak gerektiğini bilir: temel sınıfın yöntem gövdesi veya alt sınıfın yöntem gövdesi? Tüm yöntemler Java'da varsayılan olarak sanal olduğundan, final
olarak geçersiz kılınamayanları açıkça işaretleyebilir (veya bunları bir final
sınıfına yerleştirebilirsiniz). Bu, derleyicinin yöntemin hiçbir zaman geçersiz kılınmayacağını ve satır içi için güvenli olduğunu anlamaya yardımcı olacaktır. (Derleyici bazen son belirsiz yöntemler için bu belirleme yapabilir. Not
Ayrıca, alıntıda sözcüğü olabilir. Son yöntemlerin belirsiz olması garanti edilmez. Bir yöntemin satır içine girme yeteneğine sahip olmadığını garanti edebilmenizin çeşitli yolları vardır, ancak zorlayıcı zorlayıcı için inline. Inlining sonuçta ortaya çıkan kodun hızını zedelemeye yardım edeceği zaman neredeyse her zaman sizden daha iyi bilen olacaktır.
Avantaj ve sorunlara genel bir bakış için wikipedia'a bakın.
Bu yardımcı olacaktır: http://java.sun.com/developer/onlineTraining/Programming/JDCBook/perf2.html#vm – codaddict