我寻找处理内存溢出的方法或解决方案。当内存溢出或超过某个值时,可能会重新启动服务。在它死之前做一些工作。
我知道这是不正常的情况,并且所有错误都会导致内存溢出需要纠正,但我需要保证在一些问题服务恢复之后。
UPD 我有Windows服务。此服务器接受来自客户端的许多连接客户端做出一些利用内存消耗的操作。不泄漏,它只是吃内存来处理客户需求。在某些时刻(峰值负载)RAM是不够的。这不是大问题。问题是,在第一次内存溢出异常服务后无法处理任何事情。我有充满内存溢出异常的日志。它不是自动重启,它不处理客户端请求,它不会退出此状态。
我只是想找到一种方法退出这种状态的服务,如果它无法重启它。如果有可能预测这种状态。
第一种方式是限制客户,但并不保证有些客户会吃很多内存。
检测危险内存消耗并停止处理新客户端或正确重启是否可行? 如果记忆结束,它是否可以自助服务?
答案 0 :(得分:1)
内存溢出很难跟踪/处理。很可能你有某种内存泄漏。在.NET中创建内存泄漏仍然是可能的。 您无法在编程级别处理内存溢出,因为您正在托管环境中工作,您可以使用垃圾收集工作来消除不再使用的资源。最好的办法是防止内存泄漏。 如果要在内存消耗高的情况下重新启动服务,则需要使用某种管理软件包,如Microsoft SCOM,这是一种非常全面的Windows工具。
也检查这些线程 Memory Leak in C#
http://crazorsharp.blogspot.com/2009/03/net-memory-leaks-it-is-possible.html
我希望有帮助