【问题标题】:Limited Memory Usage by C# appC# 应用程序的有限内存使用
【发布时间】:2012-05-03 10:18:42
【问题描述】:

我有一个 C# 应用程序,我已编译为 64 位,它在 64 位计算机上运行,​​该计算机具有 32GB 的 RAM,并且正在运行 Windows Server 2008。当它运行时,该框在使用 9GB RAM 时达到峰值(5GB 时应用程序未运行)。

我需要让这个应用程序使用更多 RAM。我一直在网上四处寻找,无法准确指出这种限制是如何造成的。我研究了页面文件的使用(尽管从我读到的内容来看,在这种情况下虚拟内存应该不是问题)并且页面文件大小默认情况下当前设置为大约 32Gb

谁能指出我正确的方向。我对 C# 和 Visual Studio 很陌生,所以我不确定自己在做什么。

【问题讨论】:

  • ASP.NET?尝试查看配置文件。里面有什么可以定义限制的吗?
  • 我不确定您所描述的限制是否来自 .Net/CLR。 .Net 将非常高兴地继续尝试分配内存,一旦无法分配更多内存,最终会抛出 OutOfMemoryExceptions。您说您的程序刚刚达到限制的事实让我想知道是否有其他原因导致了限制。
  • 也许您应该提供有关该应用程序功能的更多详细信息。如果它具有数据库连接(并且如果 sql server 在同一台机器上运行)或者它是否将大文件加载到内存中,等等。
  • 我在配置中找到了这一行 " ”。那 4096 会是极限吗?
  • @Chris - 我对您的应用程序了解不多,但是在这些巨大的内存使用情况下,高内存消耗很可能会大大减慢您的应用程序因为垃圾收集器加班工作以收集和压缩内存。一般来说,最佳方法是以小块或逐行读取数据并串行处理它们,从而将内存使用量保持在绝对最低水平。

标签: c# visual-studio-2010


【解决方案1】:

您的应用可能只是没有分配和持有“足够”的内存。尝试分配 10 字节 [] 每个 1GB。这将成功。这证明 CLR 不是问题。

【讨论】:

    【解决方案2】:

    我认为你问错了问题。您的应用程序使用更多 RAM 并不会使其更快。您可能需要使用多线程或更好地使用 bcp 实用程序来拆分 CSV 加载任务。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-23
      • 2018-11-03
      • 1970-01-01
      • 2011-06-24
      • 1970-01-01
      • 1970-01-01
      • 2021-08-26
      • 1970-01-01
      相关资源
      最近更新 更多