Подтвердить что ты не робот

Запуск сборника мусора .NET извне

Есть ли способ вызвать сборку мусора в .NET-процессе из другого процесса или изнутри WinDBG?

Есть управляемые помощники для отладки, которые заставляют коллекцию перемещаться по родной/управляемой границе, а AQTime, похоже, имеет кнопку что он делает это, но я не могу найти документацию о том, как это сделать.

4b9b3361

Ответ 1

John Cocktoastan отвечает за использование GC.Collect, когда в Visual Studio это лучший вариант, если есть.

Я до сих пор не могу найти альтернативу тому, как на самом деле собирать коллекцию под WinDBG, но сделав шаг назад к проблеме "Сколько памяти исправляется?" (см. мой комментарий к Джону). Я думаю, что есть альтернатива, используя сценарий (PowerDBG?) поиск через некоторую комбинацию! DumpHeap и! GCRoot, чтобы найти некорневые дескрипторы и общее количество используемого пространства (в основном, эмулировать алгоритм, который GC будет делать с помощью отладчика). Но поскольку мы думали об этом, у меня не было одной из этих ошибок, поэтому я не пытался написать код, чтобы сделать это.

Ответ 2

Ну... там ближайшее окно. Если у вас есть возможность подключиться к процессу, я предположил, что вы можете вручную GC.Collect в ближайшем окне.

Большой вопрос: зачем вы хотите вручную вызывать GC.Collect? Это неприятная привычка и указывает на гораздо большие проблемы с дизайном.

Ответ 3

Отвечено в другом вопросе:

В принципе, используйте PerfView:

PerfView.exe ForceGC [ProcessName | Process ID]

Он не предназначен для использования в производстве.

Ответ 4

Если вы выставляете функцию/объект через удаленный доступ, это можно сделать довольно легко.