Como a JVM decidiu compilar um método por JIT (categorizar um método como "quente")?

Eu já trabalhei com-XX:+PrintCompilation, e conheço as técnicas básicas do compilador JIT e por que a compilação JIT é usada.

No entanto, ainda não descobri como a JVM decide compilar um método por JIT, ou seja, "quando chegar a hora certa de compilar um método por JIT".

Estou certo no pressuposto de que todo método começa a ser interpretado e, desde que não seja categorizado como "método quente", não será compilado? Tenho algo na cabeça que li que um método é considerado "quente" quando foi executado pelo menos 10.000 vezes (depois de interpretar o método 10.000 vezes, ele será compilado), mas devo admitir que sou não tenho certeza sobre isso ou onde eu li isso.

Então, para resumir minha pergunta:

1) Écada método interpretado, desde que não tenha sido categorizado como "quente" (e, portanto, foi compilado) ou há razões para os métodos serem compilados, mesmo que não sejam "quentes"?

(2) Como a JVM classifica os métodos em métodos "não quentes" e "quentes"? Número de execução? Algo mais?

(3) Se houver certos limites (como número de execuções) para métodos "quentes", existem sinalizadores Java (-XX:...) para definir esses limites?

questionAnswers(2)

yourAnswerToTheQuestion