Sök…


Anmärkningar

Historia

Symantec JIT-kompilatorn var tillgänglig i Sun Java från 1.1.5 och framåt, men den hade problem.

Hotspot JIT-kompilatorn lades till Sun Java i 1.2.2 som ett plugin. I Java 1.3 aktiverades JIT som standard.

(Källa: När fick Java en JIT-kompilator?

Översikt

ange bildbeskrivning här

JIT-kompilatorn Just-In-Time (JIT) är en komponent i Java ™ Runtime Environment som förbättrar prestanda för Java-applikationer vid körning.

  • Java-program består av klasser, som innehåller plattformneutrala bytekoder som kan tolkas av en JVM på många olika datorarkitekturer.
  • Vid körtid laddar JVM klassfilerna, bestämmer semantiken för varje enskild bytkod och utför lämplig beräkning.

Den extra processorn och minnesanvändningen under tolkning innebär att en Java-applikation fungerar långsammare än ett eget program.

JIT-kompilatorn hjälper till att förbättra prestandan för Java-program genom att kompilera bytekoder till inbyggd maskinkod vid körning.

JIT-kompilatorn är aktiverad som standard och aktiveras när en Java-metod anropas. JIT-kompilatorn kompilerar bytekoderna för den metoden till inbyggd maskinkod och sammanställer den "just in time" att köra.

När en metod har sammanställts, ringer JVM den sammanställda koden för den metoden direkt istället för att tolka den. Teoretiskt, om kompilering inte krävde processortid och minnesanvändning, kan sammanställning av varje metod tillåta Java-programmets hastighet att närma sig den för en inbyggd applikation.

JIT-sammanställning kräver processortid och minnesanvändning. När JVM först startas kallas tusentals metoder. Att sammanställa alla dessa metoder kan påverka starttiden betydligt, även om programmet så småningom uppnår mycket bra toppprestanda.


  • I praktiken sammanställs inte metoder första gången de kallas. För varje metod upprätthåller JVM ett call count som ökas varje gång metoden anropas.
  • JVM tolkar en metod tills dess samtal räknas över en JIT-kompileringströskel.
  • Därför sammanställs ofta använda metoder snart efter att JVM har startat, och mindre använda metoder sammanställs mycket senare eller inte alls.
  • JIT-kompileringströskeln hjälper JVM att starta snabbt och fortfarande ha förbättrad prestanda.
  • Tröskeln har valts noggrant för att få en optimal balans mellan starttider och långsiktig prestanda.
  • Efter att en metod har sammanställts återställs dess samtal till noll och efterföljande samtal till metoden fortsätter att öka antalet.
  • När samtalsantalet för en metod når en JIT-kompileringströskel, sammanställer JIT-kompilatorn den en andra gång och tillämpar ett större urval av optimeringar än vid föregående sammanställning.
  • Denna process upprepas tills den maximala optimeringsnivån har uppnåtts.

De mest trafikerade metoderna för ett Java-program optimeras alltid mest aggressivt, vilket maximerar prestandafördelarna med att använda JIT-kompilatorn.

JIT-kompilatorn kan också mäta operational data at run time och använda dessa data för att förbättra kvaliteten på ytterligare rekompileringar.

JIT-kompilatorn kan inaktiveras, i vilket fall hela Java-programmet kommer att tolkas. Att inaktivera JIT-kompilatorn rekommenderas inte förutom för att diagnostisera eller arbeta kring JIT-kompilationsproblem.



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow