我有一个简单的自定义内存分析器基于CLRMD库。它工作得很好。但是我必须总是从我的目标应用程序内部手动强制GC,以便获得准确的对象计数。有没有一种简单的方法可以在我的机器上从另一个进程触发CLR进程的GC?我的第一个想法是使用某种远程处理来告诉目标进程执行GC。但这将需要修改目标,这不是一个好主意。
发布于 2016-02-16 01:23:28
如果目标应用程序是您的,则可以使用自定义的CLR宿主运行它,实现ICLRGCManager,并从托管代码的“外部”调用它的“Collect方法”。
您仍然需要某种远程控制或触发器来完成此操作,但您可以导出一个C风格的过程来调用它,并从分析器中对其执行GetProcAddress操作,完全绕过托管控制(我从未在C#中尝试过这一点,只是在Delphi语言中,但它应该可以工作)。
请参阅http://community.bartdesmet.net/blogs/bart/archive/2005/07/24/2984.aspx获得一些漂亮的解释(称赞Bart De Smet)。
https://stackoverflow.com/questions/35414037
复制相似问题