Il garbage collector corre il filo che ha attivato garbage collection, sullo stesso processo. Interrompe tutto il thread corrente e si esegue da solo. Di certo non avvia un altro processo, lo avresti visto in Windows.
Da MSDN:
Prima una garbage collection inizia, tutte le discussioni gestite sono sospesi tranne per il filo che ha attivato la raccolta dei rifiuti.
(Questo vale solo per le workstation, come indicato da DrKoch). I server hanno un thread in background in esecuzione per la garbage collection.
Se si ricerca nella documentazione di riferimento per "Concurrent garbage collection", verrà visualizzato il testo "Thread GC", che supporta questo.
È possibile forzare l'esecuzione della raccolta di garabage in un thread separato, se lo si desidera. Mettete questo nella vostra app.config
:
<configuration>
<runtime>
<gcServer enabled="true"/>
</runtime>
</configuration>
(da this answer)
visualizzato anche The .NET Framework 4.5 includes new garbage collector enhancements for client and server apps, come suggerito da Adam Houldsworth, cambiamenti nel modo in cui il garbage collector lavora dal .NET 4.5.
fonte
2015-03-23 10:53:20
sono abbastanza sicuro funziona nello stesso processo, nella stessa discussione che sta eseguendo un'assegnazione, ma non ho prove per supportare la mia affermazione. Solo il mio buon senso. –
La mia scommessa - stesso processo, poiché altrimenti os impedirebbe di gestire un'altra memoria di processo. – ren
Non sono sicuro perché per me penso che sia eseguito in un processo diverso https://msdn.microsoft.com/en-us/library/ee787088(v=vs.110).aspx ma è necessario essere certi di – Omega