Maquina Virtual: Hotspot

Fala galera, tudo bem ?

Esse é meu primeiro post no grupo, estou com uma dúvida sobre a tecnologia Hotspot da Maquina virtual do Java, gostaria de saber como ela identifica os “pontos quentes” do programa que será compilado pelo JIT(Just InTime Compiler) ?

Vê se esse ebook te ajuda:

https://otaviojava.gitbooks.io/imergindo-na-jvm//

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.

1 curtida

Fala galera, obrigado pelo feedback, agora ficou mais claro o funcionamento do hotspot. Estarei lendo mais sobre o assunto.

Valeu :smiley: