7.1* Hvordan velge riktig søppeloppsamler
Hvis applikasjonen din ikke har strenge latenskrav, bør du bare kjøre applikasjonen og la JVM selv velge riktig samler.
I de fleste tilfeller fungerer standardinnstillingene fint. Om nødvendig kan du justere haugstørrelsen for å forbedre ytelsen. Hvis ytelsen fortsatt ikke er som forventet, prøv å modifisere kollektoren slik at den passer til applikasjonens krav.
- Sekvensiell . Hvis applikasjonen har et lite datasett (opptil ca. 100 MB) og/eller den vil kjøre på en enkelt prosessor uten noen latenskrav.
- Parallell . Hvis prioritet er applikasjonens toppytelse og det ikke er noen latenskrav (eller pauser på ett sekund eller mer er akseptable).
- CMS/G1 . Hvis responstid er viktigere enn total gjennomstrømning, og søppelhentingspauser bør være kortere enn ett sekund.
- ZGC . Hvis responstid er høy prioritet og/eller en veldig stor haug er involvert.
7.2* Anbefalinger for søppelhenting
Unngå manuelle utløsere
I tillegg til de grunnleggende mekanismene for søppelinnsamling, er et av de viktigste punktene med denne prosessen i Java at den er ikke-deterministisk. Det vil si at det er umulig å forutsi nøyaktig når det vil inntreffe på kjøretiden.
Ved å bruke metodene System.gc() eller Runtime.gc() kan du inkludere et hint i koden din for å starte søppelsamleren, men dette garanterer ikke at den faktisk vil kjøre.
Bruk analyseverktøy
Hvis du ikke har nok minne til å kjøre applikasjonen din, vil du oppleve nedganger, lange søppelinnsamlingstider, "verdensstopp"-hendelser og til slutt feil i minnet. Dette kan tyde på at haugen er for liten, men det kan også indikere at applikasjonen har en minnelekkasje.
Du kan bruke et overvåkingsverktøy som jstat eller Java Flight Recorder for å se om haugbruken vokser på ubestemt tid, noe som kan indikere en feil i koden.
Foretrekk standardinnstillingene
Hvis du har en liten, frittstående Java-applikasjon, trenger du sannsynligvis ikke sette opp søppeloppsamling. Standardinnstillingene vil tjene deg godt.
Bruk JVM-flagg for å tilpasse
Den beste tilnærmingen til å sette opp søppelinnsamling i Java er å sette JVM-flagg. Flagg kan brukes til å stille inn søppeloppsamleren (for eksempel Seriell, G1 og så videre), den opprinnelige og maksimale størrelsen på haugen, størrelsen på haugpartisjonene (for eksempel Ung generasjon, Gammel generasjon) og mye mer.
Velg riktig kran
En god retningslinje når det gjelder innledende innstillinger er arten av den tilpassede applikasjonen. For eksempel er den samtidige søppelsamleren effektiv, men reiser ofte «verdensstopp»-hendelser, noe som gjør den mer egnet for intern behandling der lange pauser er akseptable.
Samtidig er CMS-søppelsamleren designet for å minimere latens, noe som gjør den ideell for nettapplikasjoner der respons er viktig.
GO TO FULL VERSION