2012-09-12 7 views

risposta

17

Una generazione di GC si riferisce a quante raccolte di dati inutili sopravvive un oggetto.

Tutti gli oggetti iniziano nella generazione 0. Quando si verifica un garbage collection e un oggetto N di generazione non può essere raccolto, viene spostato alla generazione N + 1.

Le generazioni sono utilizzate per ottimizzare la raccolta dei dati inutili. E 'generalmente vero che la generazione 0:

  1. è una piccola frazione di tutto il cumulo di dimensioni
  2. ha un sacco di oggetti di breve durata.

Pertanto, quando si verifica la garbage collection, il garbage collector inizia raccogliendo la generazione 0, che sarà rapida. Se è possibile rilasciare abbastanza memoria, non è necessario guardare alle generazioni precedenti e, pertanto, la raccolta può avvenire rapidamente.

È possibile scrivere libri sull'argomento; ma per cominciare, ci sono alcuni grandi dettagli in this article o reference here.

+0

Driis: - "Non c'è bisogno di guardare alle generazioni precedenti" significa ?? Quello che sto ottenendo qui è che se c'è abbastanza memoria allora la Generazione N e N + 1 non saranno guardati ... è giusto o mi manca qualcosa? –

+0

+1. @RahulTripathi, ci sono solo 3 generazioni (0, 1, 2) che hanno serie specifiche di regole quando ogni generazione è inclusa nella collezione. I collegamenti forniti da driis (e qualsiasi articolo che ho visto finora) vanno in grandi dettagli su ciascuna delle generazioni. –

+0

@RahulTripathi sì, e come commenta Alexei, ci sono generazioni 0, 1 e 2. Gli oggetti della seconda generazione sono oggetti longevi. – driis