Dovresti raccogliere prima le giovani generazioni in una raccolta di rifiuti completa?

StackOverflow https://stackoverflow.com/questions/219540

  •  03-07-2019
  •  | 
  •  

Domanda

Sto scrivendo un programma che contiene un garbage collector generazionale. Ci sono solo due generazioni. Quello che mi chiedo è: quando faccio una collezione completa, ottengo qualcosa (dal punto di vista delle prestazioni) raccogliendo prima gli oggetti più giovani, promuovendo i sopravvissuti alla vecchia generazione e poi raccogliendo la vecchia generazione, o dovrei semplicemente immondizia raccogliere tutto in una spazzata? Non sono sicuro in che modo le persone lo facciano di solito.

Ora sto usando il metodo in due fasi, poiché era un po 'più semplice da implementare, ma forse un metodo in una fase sarebbe più efficiente?

Il Garbage Collector non sta copiando, se questo è importante.

È stato utile?

Soluzione

Dipende da quanto spesso promuovi i sopravvissuti. Se li promuovi spesso, sembra che farai molto meglio facendo GC in un colpo solo. In caso contrario, sembra che saranno abbastanza simili.

Ad ogni modo, sembra che tu faccia un po 'di lavoro ridondante facendolo in due fasi. Ad esempio, chiunque venga promosso viene intrinsecamente controllato due volte (una volta giovane e ancora vecchio). Ancora una volta, se ciò non accade troppo spesso, rimarrei con il metodo in due passaggi più semplice (poiché hai già funzionante e c'è poco da guadagnare).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top