Tem dois links interessantes que encontrei sobre o assunto:
http://www.oracle.com/technetwork/java/whitepaper-135217.html#hotspot
http://www.artima.com/designtechniques/hotspotP.html
Neles eu entendi que a HotSpot é uma das JVM usam uma técnica chamada Adaptive Optimization.
Parece que, normalmente, compiladores JIT compilam cada um dos métodos do seu programa para código nativo.
A idéia é que, virtualmente todos os programas gastam a maior parte de seu tempo executando apenas uma pequena parte de seu código. Ou seja, seu programa pode ter centenas de métodos, mas alguns são executados apenas uma vez, outros apenas sob condições especificas e outros são executados todo o tempo.
Logo, acabaria sendo perda de tempo compilar todo o código sendo que somente uma parte pequena realmente se benificiaria deste processo.
No caso da HotSpot, ao invés dela compilar método por método logo de cara, ela inicia a execução do seu programa imediatamente interpretando bytecodes e passa análizar o código conforme ele roda em busca dos tais “hot spots” que seriam partes do seu programa que são executadas com maior frequência. Esta é a Adaptive Optimization.
Por evitar a compilação de código executado com menor frequência, a HotSpot pode dedicar mais atenção a partes mais criticas do programa.