MSMQ RAM用法,如何在不重启Windows服务的情况下处理后释放内存

时间:2014-09-10 07:17:29

标签: .net

我有一个处理xml文件的Windows服务。要处理的文件的详细信息将添加到MSMQ。应用程序使用线程检索MSMQ中的项目,然后处理这些文件。当我处理超过一百个文件时,我得到“Out of memory exception”。 RAM的使用率很高,这意味着即使在处理完文件后,RAM中的内存也不会被释放。我可以在重新启动服务后继续处理。如何在不重新调整服务的情况下释放内存?

由于

2 个答案:

答案 0 :(得分:1)

优化.NET应用程序内存可能具有挑战性。首先你必须知道,在大多数情况下,巨大的内存消耗是由对象关系的错误管理引起的。但是,在某些情况下,可能会因错误使用.NET基础结构而导致消耗。

考虑以下文章:

所以你可以做的是改变公寓状态或明确地调用垃圾收集器。如果这些都没有帮助,你唯一能做的就是检查项目之间的关系,很可能你会发现一些没有得到妥善维护的集合。

答案 1 :(得分:0)

我们有一个使用MSMQ的应用程序,客户报告的内存使用率过高,最终我们的应用程序不会泄漏内存,而是使用MSMQ。根据设计,MSMQ使用大量内存来加速。我们最终会讨论如何减少MSMQ流量。