我有一个C#服务,它侦听XML消息的队列,接收它们,使用XSLT处理它们并将它们写入数据库.它每天处理大约60K个消息,每个消息大约1Mb.空闲时的内存下降到100MB,这真的很好.但是最近我开始处理大小为12 MB的消息.它确实会耗尽内存,即使在空闲时它也有大约500MB的内存.任何建议为什么这可能是一个问题?我认为没有内存泄漏,因为它会在处理了这么多(1MB的60K消息)后浮出水面.
这看起来很好.为什么你认为这是一个问题?
垃圾收集器最终会释放未使用的内存,但这并不意味着只要您的服务空闲就会发生这种情况.
Raymond Chen写了一篇很好的文章来解释垃圾收集的基本思想:
但是 - 但这是对您的问题中给出的信息的纯粹推测 - 可能存在与XSLT中的扩展方法相关的内存泄漏.如果在每次转换新的XML文档时重新编译样式表,扩展方法可能会导致问题.修复很简单:编译后,缓存样式表.
小智 5
先生!放下任务经理并走出去.认真..NET中的内存管理并未针对最小的占用空间进行调整.它针对效率进行了调整.它将保留在内存中而不是将其释放回系统.除非存在实际问题(OOM异常,系统问题),否则要抵制小心记忆的诱惑.
| 归档时间: |
|
| 查看次数: |
548 次 |
| 最近记录: |