Проверьте, сколько ссылок содержится в данном экземпляре в .NET 3.5 - PullRequest
1 голос
/ 29 декабря 2010

Можно ли проверить, сколько ссылок содержится в данном экземпляре в .NET 3.5?

Ответы [ 5 ]

4 голосов
/ 29 декабря 2010

Вы не можете сделать это во время выполнения.

2 голосов
/ 29 декабря 2010

Это можно сделать с помощью отладчика WinDbg, если вы загрузите расширение SOS:

.loadby sos.dll mscorwks

Вам потребуется найти адрес объекта в памяти, вероятно, лучше всего это сделать с помощью команды !dumpheap,С адресом объекта вы можете запустить !gcroot <address>, чтобы найти все ссылки на ваш объект.

1 голос
/ 29 декабря 2010

Вы не можете получить эту информацию во время выполнения через CLR, так как подсчет ссылок не поддерживается CLR. Большой намек на то, что сборщик мусора - это поколение, а не счетчик ссылок.

У Раймонда Чена есть хороший пост на эту тему здесь:

http://blogs.msdn.com/b/oldnewthing/archive/2010/08/11/10048629.aspx

1 голос
/ 29 декабря 2010

Мне нравится ANTS Memory Profiler для подобных задач.

1 голос
/ 29 декабря 2010

Во время отладки вы можете использовать Windbg для получения этих данных. В Windbg есть определенные команды. Я не эксперт в Windbg, но это поможет вам начать

http://www.bytetalk.net/2009/03/windbg-tips-and-tricks.html

...