Witam. Otóż mam pewien problem. Jak użyć kompilatora JIT do javy? Czy może jest on uaktywniany sam?
Ano - zawsze*, gdy uruchamiasz javowy program skompilowany do bajtkodu.
*- zależnie od używanej maszyny wirtualnej
Czyli nie muszę pobierać żadnego kompilatora? Wystarczy ten z jdk i java już sama sobie wybierze sposób kompilacji?
Jeśli masz Javę od Oracle to powinieneś dostać takie info:
$ java -X
-Xmixed mixed mode execution (default)
-Xint interpreted mode execution only
Mixed oznacza JITa i jest on domyślnie włączony.
$ java -Xint -version
java version "1.8.0_40"
Java(TM) SE Runtime Environment (build 1.8.0_40-b25)
Java HotSpot(TM) 64-Bit Server VM (build 25.40-b25, interpreted mode)
$ java -Xmixed -version
java version "1.8.0_40"
Java(TM) SE Runtime Environment (build 1.8.0_40-b25)
Java HotSpot(TM) 64-Bit Server VM (build 25.40-b25, mixed mode)
$ java -version
java version "1.8.0_40"
Java(TM) SE Runtime Environment (build 1.8.0_40-b25)
Java HotSpot(TM) 64-Bit Server VM (build 25.40-b25, mixed mode)
Dokładnie tak mam napisane. Dziękuję za pomoc ;)
To nie tak działa. Pierwszy kompilator zamienia twój kod źródłowy programu na tzw. 'bajtkod', czyli jakby kod pośredni między kodem maszynowym a kodem Java. Przez ten kompilator tworzone są pliki .class
.
Drugi etap ma miejsce gdy uruchamiasz program. Wtedy JVM (wirtualna maszyna Javy) zamienia fragmenty bajtkodu na kod maszynowy w locie, czyli Just-In-Time (JIT).
Bezpośrednia odpowiedź na twoje pytanie: sam się używa.
Precyzując odpowiedź Wizzle:
HotSpot startuje w trybie interpretera, a często wykonywane kawałki kodu (czyli hot spoty, z czego powstała nazwa VMki) są kompilowane do kodu natywnego. Stąd pojęcie rozgrzewania VMki, czyli odpalania funkcji wielokrotnie, tak by wyzwolić kompilację wcześniej niż bez rozgrzewania. To przydaje się przy mierzeniu wydajności, ale tą i tak najlepiej mierzyć za pomocą sprawdzonych narzędzi typu JMeter (dla krowiastych systemów) czy JMH (http://openjdk.java.net/projects/code-tools/jmh/ - dla krótkiego kodu).
Dziękuję każdemu za odpowiedź. Miałem nie tworzyć tego tematu ale jakoś nie mogłem znaleźć odpowiedzi w internecie :|
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.