Kompilator AOT
Kompilacja z wyprzedzeniem (AOT) umożliwia kompilowanie klas języka Java™ do kodu rodzimego w celu wykonania kolejnych wykonań tego samego programu. Kompilator AOT współpracuje z ramami współużytkowania danych klasy.
Kompilator AOT dynamicznie generuje kod rodzimy podczas działania aplikacji i buforuje wszystkie wygenerowane kody AOT w pamięci podręcznej współużytkowanych danych. Kolejne maszyny JVM, które wykonują tę metodę, mogą załadować i użyć kodu AOT ze współużytkowanej pamięci podręcznej danych bez ponoszenia spadku wydajności w przypadku skompilowanego kodu rodzimego JIT.
Kompilator AOT jest domyślnie włączony, ale jest aktywny tylko wtedy, gdy włączone są klasy współużytkowane. Domyślnie klasy współużytkowane są wyłączone, tak aby nie było wykonywane żadne działanie AOT. Gdy kompilator AOT jest aktywny, kompilator wybiera metody, które mają zostać skompilowane za pomocą operatora AOT, z podstawowym celem, jakim jest poprawa czasu uruchamiania.
W przypadku maszyny JVM bez kompilatora AOT lub z wyłączonym kompilatorem AOT kompilator JIT selektywnie kompiluje często używane metody w zoptymalizowany kod rodzimy. Jest to koszt czasu związany z kompilacją, ponieważ kompilator JIT działa w czasie działania aplikacji. Ponieważ metody zaczynają się od interpretowania i większość kompilacji JIT występuje podczas uruchamiania, czasy uruchamiania mogą być zwiększone.
Wydajność uruchamiania można poprawić, korzystając ze współużytkowanego kodu AOT, aby udostępnić kod rodzimy bez kompilowania. Istnieje niewielki koszt ładowania kodu AOT dla metody ze współużytkowanej pamięci podręcznej danych i powiązania go z działającym programem. Koszt czasu jest niski w porównaniu z czasem, w którym kompilator JIT może skompilować tę metodę.
Opcji -Xshareclasses można użyć do włączenia klas współużytkowanych, które mogą również aktywować kompilator AOT, jeśli AOT jest włączony.