Noore põlvkonna suurus prügikogudes mõjutab märkimisväärselt prügikogumist. Noor põlvkond on osa hunnikust, kus eraldatakse enamik uusi objekte ja seda kogutakse sagedamini kui vana põlvkond. Noore põlvkonna suuruse ja prügikogude tulemuslikkuse suhe hõlmab mitmesuguseid kompromisse, mis on seotud prügivedude sageduse ja kestusega.
alaealiste kollektsioonide sagedus
Noore põlvkonna suuruse suurendamine põhjustab üldiselt väiksemaid prügikollektsioone. Väiksemad kollektsioonid toimuvad noore põlvkonna täitumisel, nii et suurem noor põlvkond pakub enne kollektsiooni käivitamist rohkem ruumi uute eraldiste jaoks. See vähendab nende kollektsioonide sagedust, mis võib tulemuslikkust parandada, kuna alaealised kollektsioonid on üldiselt lühemad ja vähem häirivad kui peamised kollektsioonid. Kui noor põlvkond on suur, saab JVM eraldada ja üle elada rohkem objekte, ilma et oleks vaja neid kohe koguda, põhjustades prügikogumise sagedasi katkestusi.
Vana põlvkonna ja suuremate kollektsioonide suurus
Kui aga hunniku kogu suurus on fikseeritud, tähendab suurem noor põlvkond väiksemat vana põlvkonda. Vana põlvkond salvestab objekte, mis on noore põlvkonna mitu kollektsiooni üle elanud ja on tavaliselt pikem eluaeg. Väiksem vana põlvkond viib sagedasemate suuremate kollektsioonideni, mis on pausi aja ja CPU kasutamise osas kallimad kui alaealiste kollektsioonide osas. Suuremad kollektsioonid puhastavad vana põlvkonna ja võivad liiga sageli esineda, kui need esinevad liiga sageli.
Optimaalne tasakaal sõltub objekti elueast
Noore põlvkonna optimaalne suurus sõltub rakenduse objektide eraldamisest ja eluea omadustest. Kui rakendus loob palju lühiajalisi esemeid, saab suurem noor põlvkond parandada tulemusi, vähendades alaealiste kollektsioonide sagedust, suurendades suurt suuremat kogumissagedust. Kui rakendusel on palju pikaajalisi objekte, on kulukate suuremate kollektsioonide vältimiseks kriitilise tähtsusega suuruse tasakaalustamine, et tagada vana põlvkonna ruum.
JVM -valikud häälestamiseks
Noore põlvkonna suurust saab juhtida JVM -i valikute abil. Näiteks suvand `-xx: Newratio` seab vana ja noorte põlvkondade suhte. Näiteks `-xx: newratio = 3` tähendab, et vana põlvkond on noore põlvkonna suurus kolm korda suurem, nii et noor põlvkond on umbes neljandik hunnikust. Valikud nagu `-xx: Newsze` ja` -xx: MaxNewSize` lubage täpsemat juhtimist, määrates noore põlvkonna suuruse fikseeritud suurused või piirid. Noore põlvkonna suuruse kinnitamine aitab stabiliseerida prügiveo jõudlust.
Survivori ruumid noore põlvkonna sees
Noore põlvkonna sees käivad ellujäänute ruumid objekte, mis ületavad alaealisi kollektsioone, kuid ei pruugi veel olla piisavalt vana, et vanale põlvkonnale reklaamida. Survivori ruumi suuruste häälestamine (konfigureeritud `-xx: Survivorratio`) mõjutab seda, kui kaua objektid noore põlvkonna ees enne reklaamimist püsivad. Liiga väikesed ellujäänuruumid põhjustavad enneaegset reklaamimist, suurendades vana põlvkonna suurust ja peamist kogumissagedust. Liiga suured üle elanud ruumid raiskavad mälu ja vähendavad noore põlvkonna suutlikkust uute eraldiste jaoks.
Mõju läbilaskevõimele ja pausi ajale
Suurem noor põlvkond vähendab väiksemate kollektsioonide sagedust, mis üldiselt vähendab GC üldkulusid ja parandab läbilaskevõimet. Kui alaealine kollektsioon toimub, võib see skannimiseks suurema hunniku ruumi tõttu võtta kauem. Vastupidiselt viib väiksem noor põlvkond sagedamini, kuid lühemaid alaealisi kollektsioone. Üldine mõju rakenduse läbilaskevõimele, latentsusajale ja pausi ajale sõltub sellest kompromissist.
empiiriline häälestamine ja logimine
JVM -i prügikogude logimise jälgimine aitab kindlaks teha noore põlvkonna õige suuruse, analüüsides alaealiste ja peamiste kollektsioonide sagedust ja kestust koos ellujäänute ruumi kasutamisega. Tööriistad ja võimalused, näiteks `-xlog: GC, Age` pakuvad üksikasjalikke GC käitumise andmeid, et neid parameetreid tõhusalt häälestada reaalsete töökoormuse karakteristikute põhjal.
Kokkuvõte
Kokkuvõtlikult mõjutab noore põlvkonna suurus prügikogu tulemuslikkust:
- suurem noor põlvkond vähendab alaealiste kollektsioonide sagedust, kuid võib suurendada väiksema vana põlvkonna tõttu suuremate kollektsioonide sagedust.
- Väiksem noor põlvkond suurendab väiksemat kogumissagedust, kuid lühendab väiksema kogumise kestust.
- Optimaalne suurus sõltub rakenduse objekti eluea mustritest.
-JVM parameetrid nagu `-xx: newratio`,` -xx: Newsze` ja `-xx: maxnewSize` kontrollige noore põlvkonna suurust häälestamiseks.
- Survivori kosmose suurus mõjutab objektide reklaamimist ja üldist GC tõhusust.
- jõudluse häälestamine nõuab läbilaskevõime ja pausi aja optimeerimiseks hoolikat tasakaalu, mis on informeeritud empiiriliste GC logide ja seire abil.