Используя java -XX:+PrintFlagsFinal
, я нашел флаг TieredCompilation
, и я немного об этом прочитал.
Тем не менее, я до сих пор не знаю точно, что произойдет, установив его на false
.
Я знаю, что система компиляции поддерживает 5 уровней выполнения, в основном разделенных на интерпретатор, C1 и C2:
- уровень 0 - интерпретатор
- уровень 1 - C1 с полной оптимизацией (без профилирования)
- уровень 2 - C1 с счетчиками invocation и backedge
- уровень 3 - C1 с полным профилированием (уровень 2 + MDO)
- уровень 4 - C2
Два вопроса:
(1) Установив -XX:-TieredCompilation
, некоторые из этих уровней просто отключены? Если да, то какой?
(2) Есть ли какой-то флаг, чтобы решить, следует ли отключать C1 или C2 или вообще не компилироваться?