CodeGym/Java kurs/Modul 3/Att välja en sophämtare i Java

Att välja en sophämtare i Java

Nivå, Lektion
Tillgängliga

7.1* Hur man väljer rätt sopsamlare

Om din applikation inte har strikta latenskrav bör du bara köra applikationen och låta JVM själv välja rätt samlare.

I de flesta fall fungerar standardinställningarna bra. Om det behövs kan du justera högstorleken för att förbättra prestandan. Om prestandan fortfarande inte är som förväntat, försök att modifiera insamlaren så att den passar din applikations krav.

  • Sekventiell . Om applikationen har en liten datamängd (upp till cirka 100 MB) och/eller körs på en enda processor utan några latenskrav.
  • Parallell . Om prioriteringen är applikationens toppprestanda och det inte finns några latenskrav (eller pauser på en sekund eller mer är acceptabla).
  • CMS/G1 . Om svarstiden är viktigare än den totala genomströmningen, och sophämtningspauserna bör vara kortare än en sekund.
  • ZGC . Om svarstiden är hög prioritet och/eller en mycket stor hög är inblandad.

7.2* Rekommendationer för sophämtning

Undvik manuella triggers

Förutom de grundläggande mekanismerna för sophämtning, är en av de viktigaste punkterna med denna process i Java att den är icke-deterministisk. Det vill säga, det är omöjligt att förutsäga exakt när det kommer att inträffa vid körning.

Genom att använda metoderna System.gc() eller Runtime.gc() kan du inkludera en ledtråd i din kod för att starta sopsamlaren, men detta garanterar inte att den faktiskt kommer att köras.

Använd analysverktyg

Om du inte har tillräckligt med minne för att köra din applikation kommer du att uppleva avmattningar, långa sophämtningstider, "världsstopp"-händelser och så småningom minnesfel. Detta kan tyda på att högen är för liten, men det kan också indikera att applikationen har en minnesläcka.

Du kan använda ett övervakningsverktyg som jstat eller Java Flight Recorder för att se om heapanvändningen växer på obestämd tid, vilket kan indikera ett fel i koden.

Föredrar standardinställningarna

Om du har en liten, fristående Java-applikation behöver du förmodligen inte ställa in sophämtning. Standardinställningarna kommer att tjäna dig väl.

Använd JVM-flaggor för att anpassa

Det bästa sättet att ställa in sophämtning i Java är att ställa in JVM-flaggor. Flaggor kan användas för att ställa in sopsamlaren (till exempel Seriell, G1 och så vidare), den initiala och maximala storleken på högen, storleken på högpartitionerna (till exempel Young generation, Old generation) och mycket Mer.

Välj rätt kran

En bra riktlinje när det gäller initiala inställningar är den anpassade applikationens karaktär. Till exempel är den samtidiga sophämtaren effektiv, men skapar ofta "världsstopp"-händelser, vilket gör den mer lämpad för intern bearbetning där långa pauser är acceptabla.

Samtidigt är CMS garbage collector designad för att minimera latens, vilket gör den idealisk för webbapplikationer där lyhördhet är viktig.

Kommentarer
  • Populär
  • Ny
  • Gammal
Du måste vara inloggad för att lämna en kommentar
Den här sidan har inga kommentarer än