2015-07-23 3 views
2

У меня есть приложение, которое создает новые процессы во время выполнения и внутри этих процессов AppDomains.Выполните GC.Collect на другом процессе

Чтобы отслеживать сохраненную память AppDomain, мне нужно сначала выполнить GC.Collect, но когда в другом процессе я точно не знаю, как это сделать. Есть ли способ?

Заранее спасибо.

ответ

3

Возможно, существует более прямой способ, но вот что явно работает: заставьте другое приложение выставить некоторую конечную точку RPC, которую вы можете вызвать, чтобы инициировать GC. Например, используйте .NET Remoting, чтобы открыть очень простую службу, связанную с именованным каналом. Код для этого на удивление маленький.

+0

Это то, о чем я думаю. Просто спрашиваю, потому что я не знаю, есть ли более декларативный способ сделать это, поскольку такие инструменты, как dotMemory, могут заставить GC без необходимости иметь явную конечную точку. – danielp

+1

Эти инструменты используют API-интерфейс профилировщика CLR, который чрезвычайно инвазивен и требует присоединения при запуске процесса AFAIK. – usr

+0

Имеет смысл ... Спасибо! – danielp

Смежные вопросы