【问题标题】:Restart Application If using too much RAM [duplicate]重新启动应用程序如果使用太多 RAM [重复]
【发布时间】:2013-10-23 23:46:12
【问题描述】:

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

【问题讨论】:

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

标签: c# memory


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    更多信息可以看这里:http://msdn.microsoft.com/en-us/library/system.gc.gettotalmemory.aspx

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-31
      相关资源
      最近更新 更多