C# 如果使用太多RAM,请重新启动应用程序

C# 如果使用太多RAM,请重新启动应用程序,c#,memory,C#,Memory,我正在创建一个服务器(控制台应用程序),但在做了一些长期测试后,我发现它正在消耗内存。对于本地测试套件,我没有使用太多的RAM (8GB-DDR3@2400MHz)如果程序使用的RAM超过“x”个数量,是否有办法(我假设是在Program.cs中)重新启动程序?另外,一种方法可能是定时循环/检查 您可以使用GC.GetTotalMemory。它返回程序分配的内存量的近似值(long) 您可以创建一个Timer对象,并在Tick事件处理程序下进行比较 有关更多信息,请参见此处:我同意其他人关于修复

我正在创建一个服务器(控制台应用程序),但在做了一些长期测试后,我发现它正在消耗内存。对于本地测试套件,我没有使用太多的RAM
(8GB-DDR3@2400MHz)如果程序使用的RAM超过“x”个数量,是否有办法(我假设是在Program.cs中)重新启动程序?另外,一种方法可能是定时循环/检查

您可以使用
GC.GetTotalMemory
。它返回程序分配的内存量的近似值(
long

您可以创建一个
Timer
对象,并在
Tick
事件处理程序下进行比较


有关更多信息,请参见此处:

我同意其他人关于修复内存泄漏的说法


如果要重新启动程序,请创建第二个应用程序来监视第一个进程。然后,当原始应用程序的内存过高时,请安全地关闭它,并允许第二个应用程序再次启动它。

如果您正在编写服务器,您通常不需要控制台应用程序,而是需要Windows服务。此外,如果消耗的内存量实际增加,则应用程序中存在内存泄漏,您应该修复。请注意,即使没有,消耗的内存也可能会增加。Net并不总是向操作系统返回可用内存(除非操作系统告诉它需要内存)。我建议首先检查应用程序为什么使用那么多RAM,而不是检查它使用了多少RAM。。