7.1* Sådan vælger du den rigtige skraldeopsamler
Hvis din applikation ikke har strenge latenskrav, skal du bare køre applikationen og lade JVM selv vælge den rigtige samler.
I de fleste tilfælde fungerer standardindstillingerne fint. Om nødvendigt kan du justere bunkestørrelsen for at forbedre ydeevnen. Hvis ydeevnen stadig ikke er som forventet, kan du prøve at ændre opsamleren, så den passer til din applikations krav.
- Sekventiel . Hvis applikationen har et lille datasæt (op til ca. 100 MB) og/eller den kører på en enkelt processor uden nogen latenskrav.
- Parallel . Hvis prioriteten er applikationens maksimale ydeevne, og der ikke er nogen latenskrav (eller pauser på et sekund eller mere er acceptable).
- CMS/G1 . Hvis responstiden er vigtigere end den samlede gennemstrømning, og affaldsindsamlingspauserne bør være kortere end et sekund.
- ZGC . Hvis responstiden er høj prioritet og/eller en meget stor bunke er involveret.
7.2* Anbefalinger til indsamling af affald
Undgå manuelle udløsere
Ud over de grundlæggende mekanismer for affaldsindsamling er en af de vigtigste punkter ved denne proces i Java, at den er ikke-deterministisk. Det vil sige, at det er umuligt at forudsige, hvornår det præcist vil ske på kørselstidspunktet.
Ved at bruge metoderne System.gc() eller Runtime.gc() kan du inkludere et hint i din kode for at starte skraldeopsamleren, men dette garanterer ikke, at den rent faktisk kører.
Brug analyseværktøjer
Hvis du ikke har nok hukommelse til at køre din applikation, vil du opleve opbremsninger, lange affaldstider, "verdensstop"-hændelser og i sidste ende fejl i hukommelsen. Dette kan indikere, at heapen er for lille, men det kan også indikere, at applikationen har en hukommelseslækage.
Du kan bruge et overvågningsværktøj som jstat eller Java Flight Recorder for at se, om heap-forbruget vokser på ubestemt tid, hvilket kunne indikere en fejl i koden.
Foretrækker standardindstillingerne
Hvis du har en lille, selvstændig Java-applikation, behøver du sandsynligvis ikke at konfigurere affaldsindsamling. Standardindstillingerne vil tjene dig godt.
Brug JVM-flag til at tilpasse
Den bedste tilgang til at konfigurere affaldsindsamling i Java er at indstille JVM-flag. Flag kan bruges til at indstille skraldeopsamleren (f.eks. Seriel, G1 og så videre), den oprindelige og maksimale størrelse af bunken, størrelsen af bunkens skillevægge (f.eks. Young generation, Old generation) og meget mere.
Vælg den rigtige vandhane
En god retningslinje med hensyn til startindstillinger er karakteren af den brugerdefinerede applikation. For eksempel er den samtidige affaldsopsamler effektiv, men rejser ofte "verdensstop"-hændelser, hvilket gør den mere velegnet til intern behandling, hvor lange pauser er acceptable.
Samtidig er CMS garbage collector designet til at minimere latency, hvilket gør den ideel til webapplikationer, hvor lydhørhed er vigtig.