Gen 0: Quindi ho letto i trigger gen 0 quando gen 0 supera una soglia di dimensione. Ma ho anche letto che GC non viene eseguito in un "nuovo", perché "nuovo" semplicemente scorre un indirizzo in avanti. Quindi, quando controlla che abbia superato la soglia per attivare il gen 0 GC?Quando fa esattamente gen 0, gen 1, gen 2?
Gen 1/2: Do gen 1/2 hanno la propria soglia di dimensione che attiva GC? Quando considerano la soglia? È il momento in cui i sopravvissuti vengono promossi al gen?
Significa che per un GC di gen 1 si verifichi prima controlla gen 0, quindi li promuove a gen 1, solo per scoprire che gen 1 ha superato la soglia e quindi controlla gen 1 e controlla nuovamente gen 0?
E ciò significa che un GC di gen 2 si verifica prima controlla gen 0, quindi li promuove a gen 1, solo per scoprire che gen 1 ha superato la soglia e quindi controlla gen 1 e controlla nuovamente gen 0. Quindi promuove gen 0 a gen 1 e gen 1 a gen 2, solo per scoprire che gen 2 ha superato la soglia e quindi ricontrolla nuovamente gen 2, gen 1 e gen 0?
Tutti questi dettagli sono dettagli di implementazione interna di proprietà, variano da implementazione a implementazione e sono soggetti a modifiche in qualsiasi momento. Inoltre, il GC gira su una propria discussione, quindi anche la programmazione dei thread è un fattore. Se potessi dire perché ti interessi, questo ti aiuterà a ottenere una risposta migliore. Se ti interessa, ad esempio, perché vuoi sapere quando sei in pericolo di una raccolta costosa che accade in un brutto momento, ci sono modi in cui puoi scoprirlo * senza * conoscere i dettagli interni del GC. –
Mi interessa perché devo spiegarlo a persone che non conoscono totalmente GC e ho scoperto che conosco semplicemente l'effetto ma non ne conosco la causa. Inoltre, non so quali non siano i dettagli di implementazione e quali sono tali che non devo spiegare. –
Se ti interessa quando il GC entra in azione, stai sbagliando. – leppie