Jaunās paaudzes lielums atkritumu savākšanā ievērojami ietekmē atkritumu savākšanas veiktspēju. Jaunā paaudze ir daļa no kaudzes, kurā tiek piešķirti lielākā daļa jauno priekšmetu, un tas tiek savākts biežāk nekā vecā paaudze. Saikne starp jaunās paaudzes lielumu un atkritumu savākšanas veiktspēju ir saistīta ar dažādiem kompromisiem, kas saistīti ar atkritumu savākšanas notikumu biežumu un ilgumu.
Nelielu kolekciju biežums
Jaunās paaudzes lieluma palielināšana parasti rada mazāk nelielas atkritumu kolekcijas. Nelielas kolekcijas rodas, kad jaunā paaudze piepildās, tāpēc lielāka jaunā paaudze nodrošina vairāk vietas jauniem piešķīrumiem pirms kolekcijas iedarbināšanas. Tas samazina šo kolekciju biežumu, kas var uzlabot veiktspēju, jo nelielas kolekcijas parasti ir īsākas un mazāk graujošas nekā galvenās kolekcijas. Kad jaunā paaudze ir liela, JVM var piešķirt un izdzīvot vairāk priekšmetu, nekavējoties tos nekavējoties savācot, izraisot retākus atkritumu savākšanas pārtraukumus.
Vecās paaudzes un galveno kolekciju lielums
Tomēr, ja kopējais kaudzes lielums ir fiksēts, lielāka jaunā paaudze nozīmē mazāku vecu paaudzi. Vecās paaudzes veikalu objekti, kas ir pārdzīvojuši vairākas kolekcijas jaunajā paaudzē un kuriem ir ilgāka mūža garums. Mazāka veca paaudze noved pie biežākām galvenajām kolekcijām, kas pauzes laikos un CPU lietošanā ir dārgākas nekā nelielas kolekcijas. Galvenās kolekcijas sakopj veco paaudzi un var ievērojami ietekmēt lietojuma caurlaidspēju un reakciju, ja tās notiek pārāk bieži.
Optimālais līdzsvars ir atkarīgs no objekta dzīves laika
Jaunās paaudzes optimālais lielums ir atkarīgs no lietojumprogrammas objektu piešķiršanas un dzīves īpašībām. Ja lietojumprogramma rada daudzus īslaicīgus objektus, lielāka jaunā paaudze var uzlabot veiktspēju, samazinot nelielu kolekciju biežumu, pārmērīgi palielinot galveno kolekcijas frekvenci. Ja lietojumprogrammai ir daudz ilgstošu priekšmetu, lieluma līdzsvarošana, lai nodrošinātu atbilstošu vecās paaudzes telpu, ir kritiska, lai izvairītos no dārgām nozīmīgām kolekcijām.
JVM noregulēšanas iespējas
Jaunās paaudzes lielumu var kontrolēt, izmantojot JVM opcijas. Piemēram, opcija `-xx: newratio` nosaka attiecību starp vecajām un jaunajām paaudzēm. Piemēram, `-xx: newratio = 3` nozīmē, ka vecā paaudze ir trīs reizes lielāka par jaunās paaudzes lielumu, tāpēc jaunā paaudze ir apmēram viena ceturtā daļa kaudzes. Tādas iespējas kā `-xx: awsize` un` -xx: maxnewSize` ļauj precīzāk kontrolēt, iestatot fiksēto izmēru vai robežas jaunās paaudzes lielumā. Jaunās paaudzes lieluma noteikšana var palīdzēt stabilizēt atkritumu savākšanas veiktspēju.
izdzīvojušās telpas jaunajā paaudzē
Jaunās paaudzes iekšpusē izdzīvojušās telpas apstrādā objektus, kas izdzīvo nelielas kolekcijas, bet, iespējams, vēl nav pietiekami vecas, lai paaugstinātu veco paaudzi. Survivor telpas izmēru noregulēšana (konfigurēta ar `-xx: Survivorratio`) ietekmē to, cik ilgi objekti paliek jaunajā paaudzē pirms paaugstināšanas. Pārāk mazas izdzīvojušās telpas izraisa priekšlaicīgu veicināšanu, palielinot vecās paaudzes lielumu un galveno savākšanas biežumu. Pārāk lielas izdzīvojušās telpas atkritumu atmiņu un samazina jaunās paaudzes spēju sasniegt jaunus piešķīrumus.
Ietekme uz caurlaidspēju un pauzes laikiem
Lielāka jaunā paaudze samazina nelielu kolekciju biežumu, kas parasti samazina GC virs galvas un uzlabo caurlaidspēju. Tomēr, kad notiek neliela kolekcija, var paiet ilgāks laiks, jo skenēšana ir lielāka kaudzes. Un otrādi, mazāka jaunā paaudze noved pie biežākām, bet īsākām mazākām kolekcijām. Kopējā ietekme uz lietošanas caurlaidspēju, latentumu un pauzes laikiem ir atkarīga no šī kompromisa.
Empīriskā noregulēšana un mežizstrāde
JVM atkritumu savākšanas mežizstrādes uzraudzība var palīdzēt noteikt pareizo lielumu jaunajai paaudzei, analizējot mazo un galveno kolekciju biežumu un ilgumu, kā arī izdzīvojušo telpas izmantošanu. Rīki un iespējas, piemēram, `-xlog: gc, vecums`, nodrošina detalizētus GC uzvedības datus, lai efektīvi noregulētu šos parametrus, pamatojoties uz reālām darba slodzes raksturlielumiem.
kopsavilkums
Rezumējot, jaunās paaudzes lielums ietekmē atkritumu savākšanas veiktspēju:
- Lielāka jaunā paaudze samazina nelielu kolekciju biežumu, bet mazākas vecās paaudzes dēļ var palielināt galveno kolekciju biežumu.
- Mazāka jaunā paaudze palielina nelielu savākšanas biežumu, bet saīsina nelielu savākšanas ilgumu.
- Optimāls izmērs ir atkarīgs no objekta dzīves modeļiem lietojumprogrammā.
-JVM parametri, piemēram, `-xx: newratio`,` -xx: awsize` un `-xx: maxNewSize` Kontroles jaunās paaudzes lielums noregulēšanai.
- Apgādnieka zaudējuma kosmosa lielums ietekmē objekta veicināšanu un vispārējo GC efektivitāti.
- Veiktspējas noregulēšanai ir nepieciešams rūpīgs līdzsvars, lai optimizētu caurlaidspēju un pauzes laiku, ko informē empīriski GC žurnāli un uzraudzība.