Мне интересно узнать, сколько объектов было исправлено сборщиком мусора после запуска следующего кода.Узнать, сколько объектов было исправлено сборщиком мусора C#
if (ObjectsOutstanding > GCThreshold) {
System.GC.Collect();
}
Мне интересно узнать, сколько объектов было исправлено сборщиком мусора после запуска следующего кода.Узнать, сколько объектов было исправлено сборщиком мусора C#
if (ObjectsOutstanding > GCThreshold) {
System.GC.Collect();
}
Одним из простых способов сделать это для ваших собственных пользовательских типов было бы увеличение и отслеживание некоторых счетчиков в их финализаторах.
например.
public class MyCustomType
{
public static int NumFinalizersCalled;
~MyCustomType()
{
Interlocked.Increment(ref NumFinalizersCalled);
}
}
@ Хенк Холтерман: 'GC.WaitForPendingFinalizers' исправит это, не так ли? – Ani
Я бы бросил директиву прекомпилятора '#if DEBUG' там, чтобы он не попал в сборку релиза. –
В Visual Studio отладчик можно использовать SOS library в ближайшем окне. Существует несколько методов GC, которые дают вам необходимую информацию. Я не знаю, это то, что вы хотите, но это отправная точка.
Это редко желательно звонить GC.Collect –
может быть, вы можете переопределить метод доработать и поставить счетчик для регистрации каждого вызова этого метода, но я не уверен, если вы можете сделать это. –
Все виды объектов или вы проверяете свои собственные объекты? –