2011-09-07 3 views
2

J'ai essayé de lire des algorithmes de collecte de place dans Java et dans .Net récemment. Jusqu'à présent, j'ai découvert que Java utilise Mark et Sweep comme algorithme dans ses collecteurs.. Net 4 garbage collection

Est-ce que .Net utilise Mark et balaye aussi bien sur toutes les générations?

Comment Microsoft est-il passé de G0, collecteur G1 concurrent, exécutant SERIALLY avec G @ collector, à un sth appelé BACKGROUND GC, où tout est parallèle?

Merci d'avance pour vos réponses.

+2

Avez-vous lu http://msdn.microsoft.com/en-us/library/0xy59wtx.aspx? Il semble que cela va expliquer plus en détail que n'importe quelle réponse ici. – Tejs

+0

La plupart des JVM, y compris les populaires *, n'utilisent pas * simplement la fonction mark-and-sweep! – delnan

+0

que sont les autres alors? – bober02

Répondre

1

.NET GC est un collecteur d'ordures de marque et de balayage. Arrière-plan GC signifie que vous pouvez effectuer des GC Gen2 pendant que votre application est en cours d'exécution. Si votre application est intensive en allocation et que le GC de fond ne peut pas libérer suffisamment d'espace pour la nouvelle allocation, le collecteur BGC est arrêté, et un collecteur stop-the-world est utilisé pour faire un GC Gen2 complet (ce qui peut entraîner compactage du tas, ou l'étendre)

Hope this helps