繁体   English   中英

生产代码中的内存泄漏

[英]Memory leak in production Code

我有一个使用C#WCF编写的作为Windows服务运行的应用程序。 在生产代码中,我们看到了一种行为,其中应用程序的内存增长缓慢。 查看代码后,我们发现有一个词典(并发),其中作业完成时添加而不删除项目。 物品以每秒约100个的速度进入。 没有更改代码,有什么方法可以解决此问题? 还是有强制应用程序从外部进行垃圾收集的? 据我所知,只有发布它才能知道那里是否有任何可能性。

Item是具有两个属性的对象(均为int)。

如果将应用程序移动为由IIS作为应用程序池运行,则可以配置应用程序池“回收” 选项之一是对虚拟内存使用量进行回收 ,这是ASP处理内存泄漏的方式。

您还可以滚动自己的回收站,监视服务内存使用量,并在达到阈值时重新启动它。

当然,应用程序回收确实意味着进程重新启动,并且您的WCF服务可能对此做出不良反应,您的API调用可能会遇到减少的SLA,并且更糟的是,您可能会暴露WCF服务中的有害行为(错误)。 但是,这几乎是“控制”不带重新部署的生产中泄漏的唯一方法。

理想情况下,修复泄漏并重新部署。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM