我将如何让垃圾收集清理绑定到了进程内COM服务器RCW对象?(How would I make ga

2019-10-22 21:14发布

我有天运行64位.NET进程。 该过程消耗使用DCOM原生32位COM服务器。 在一段时间后COM服务器内存用完,因为.NET过程垃圾收集器只看到COM对象的的RCW,而这些都是相当轻便,“不值得收藏。” 我需要以某种方式使垃圾收集器识别这些COM对象。

为了记录在案,我试图定期运行相同的代码强制启动垃圾收集和问题消失了,所以这个问题是不是有些类型的泄漏,只是对象不是收集速度不够快。

是的,我知道有GC.AddMemoryPressure()它允许告诉垃圾收集器,我们现在正在消耗更多的内存。 问题是64位.NET进程可以把它看成“不是什么大事” - 这是64位和好了,这里技嘉和其他技嘉存在 - “谁在乎”,但32位的过程,其中的物体的实际生活更敏感的那些分配。

那么,什么可能是“没什么大不了”的64位进程肯定是一个大问题,对于32位进程,我需要以某种方式使64位进程的垃圾收集器是使用的内存量更敏感另一个进程。

我该如何处理这种情况,使64位进程及时收集和的RCW 32位COM服务器不运行内存不足?

文章来源: How would I make garbage collection clean up RCW objects bound to an out-proc COM server?