Trouver des références à l'objet lors de l'exécution

J'ai un objet, qui vit pour toujours. Je suis deleteing toutes les références que je peux voir, après qu'il l'aide, mais il ne collecte pas encore. Son cycle de vie est assez sophistiquée, donc je ne peux pas être sûr que toutes les références à été effacé.

if ( container.Controls.Count > 0 )
{ 
    var controls = new Control[ container.Controls.Count ];
    container.Controls.CopyTo( controls, 0 );

    foreach ( var control in controls ) 
    { 
         container.Controls.Remove( control );
         control.Dispose();
    }

    controls = null; 
}

GC.Collect();
GC.Collect(1);
GC.Collect(2);
GC.Collect(3);

Comment puis-je savoir quelles sont les références-t-il encore? Pourquoi est-il recueilli?

Montre-nous ton code et on peut peut-être aider. Gardez à l'esprit que la collecte des ordures n'est pas forcément immédiatement.
Et je pense que la vraie question est, pourquoi vous inquiéter? Si vous êtes à l'aide des ressources disponibles, d'en Disposer quand vous ne l'utilisez pas plus de nettoyer non géré les ressources du système, et attention à la chaîne de stage.
Le code est: si ( récipient.Les contrôles.Count > 0 ) { var contrôles = nouveau Contrôle[ conteneur.Les contrôles.Count ]; conteneur.Les contrôles.CopyTo( contrôles, 0 ); foreach ( var contrôle dans les contrôles ) { conteneur.Les contrôles.Supprimer( de contrôle ); le contrôle.Dispose(); } contrôles = null; } GC.Collect(); GC.Collecter(1); GC.Collecter(2); GC.Collecter(3); Mais il est encore en mémoire. Donc ça veut dire, qu'il l'acier ont des racines. Comment puis-je trouver cette racines?
Êtes-vous sûr que c'est dans la mémoire? La machine virtuelle ne peut pas donner de la mémoire qu'il a utilisés.
Désolé pour le formatage, Le code est: "si ( le contenant.Les contrôles.Count > 0 ) { var contrôles = nouveau Contrôle[ conteneur.Les contrôles.Count ]; conteneur.Les contrôles.CopyTo( contrôles, 0 ); foreach ( var contrôle dans les contrôles ) { conteneur.Les contrôles.Supprimer( de contrôle ); le contrôle.Dispose(); } contrôles = null; } GC.Collect(); GC.Collecter(1); GC.Collecter(2); GC.Collecter(3); " Mais c'est encore en mémoire. Donc ça veut dire, qu'il l'acier ont des racines. Comment puis-je trouver cette racines?

OriginalL'auteur er-v | 2009-09-24