JDK Flight Recorder

JDK Flight Recorder är en händelseinspelare inbyggd i den virtuella Java-maskinen . Det kan ses som mjukvarumotsvarigheten till en Data Flight Recorder (Black Box) i ett kommersiellt flygplan. Den fångar information om JVM och programmet som körs i JVM. Det finns en mängd olika data som fångas in, till exempel metodprofilering, allokeringsprofilering och sophämtningsrelaterade händelser. JDK Flight Recorder designades för att minimera observereffekten i det profilerade systemet och är tänkt att alltid vara på i produktionssystem. Tekniken var öppen källkod 2018.

Analys och visualisering av flyginspelningar görs normalt med JDK Mission Control .

Teknologi

En inspelningsfil består av binära databitar. Varje bit är självbeskrivande och fristående. Med andra ord, metadata (som datatypen och innehållstypen för varje attribut) som behövs för att använda data (inte bara analysera händelserna, utan faktiskt använda dem) ingår i biten. Alla värden som krävs för att lösas genom t.ex. konstanta pooler ingår också i chunken.

Det finns en mängd olika tekniker som används för att göra JFR effektiv, till exempel:

  • Binära representationer, inga översättningar fram och tillbaka till strängar, buffertarna sänds effektivt ut till disken
  • De flesta händelser spelas in i trådlokala inbyggda buffertar
  • På vissa plattformar används invariant TSC för effektiv tidsstämpling
  • Heltalskomprimeringsschema, för att hålla nere storleken i minnet och på filen
  • Sedan de har implementerats i JVM är mycket data lätt tillgänglig, eller sänds ut vid en tidpunkt då data är lättillgänglig, vilket håller kostnaderna nere

Om du konverterar en binär inspelning till JSON kan den lätt sprängas med två storleksordningar eller mer, beroende på längd och innehåll som spelas in.

Den förväntade prestandaoverheaden för JFR som använder standardmallen är mindre än en procent och för profilmallen mindre än två procent.

Historia

JDK Flight Recorder började som JRockit Flight Recorder och användes ursprungligen som ett sätt att samla in data som skulle användas för att förbättra själva JVM. Efter att Oracle förvärvade Sun Microsystems omdöptes JRockit Flight Recorder till Java Flight Recorder. 2018 var Java Flight Recorder öppen källkod och släpptes som en del av OpenJDK 11. När den var öppen källkod omdöptes den till JDK Flight Recorder, på grund av problem med Java-varumärken.

versioner

Det här är de tillgängliga versionerna av JFR-filformatet. Den omfattar inte alla versioner som någonsin har funnits, utan snarare versioner som finns i JVMs efter migreringen till HotSpot.

JFR version JDK-versioner
v0.9 Oracle JDK 7 (u4+), Oracle JDK 8
v1.0 Oracle JDK 9, Oracle JDK 10
v2.0 Oracle JDK 11+, Open JDK 11+, Azul JDK 8 och Azul JDK 11+

Se även