【问题标题】:c# - How to get the amount of memory available for my applicationc# - 如何获取我的应用程序可用的内存量
【发布时间】:2014-03-14 13:21:03
【问题描述】:

我发现我可以通过 ComputerInfo.TotalPhysicalMemory 属性。 http://msdn.microsoft.com/en-us/library/microsoft.visualbasic.devices.computerinfo.totalphysicalmemory.aspx

但是有什么方法可以找出我实际可用的内存吗? 应用。 因此,例如,如果我的内存不足,我可以做出反应。

这可能吗? 或者这只是不好的做法。

提前致谢

【问题讨论】:

  • 如果你检测到这样的事情你会怎么做?物理内存和可用堆是两个非常不同的东西。垃圾收集器在 .NET 中处理这个问题,而不是你。这是一个世代记忆模型——问题是哪一代?我不会追求这种思路。
  • 定义“可用”。另请阅读:blogs.msdn.com/b/ericlippert/archive/2009/06/08/…
  • 好的,让我们给你一些更多的细节......我想知道有多少内存可用,以便我可以根据这些数据进行优化。这样我就可以尽量不要把太多的数据加载到内存中,这样系统就不会交换,所以性能会变慢
  • 不要尝试优化操作系统分配内存的方式。您有什么具体的性能问题?

标签: c# .net memory


【解决方案1】:

如果您阅读Eric Lippert article,您会看到这个重要的段落:

“内存不足”错误几乎不会发生,因为没有 有足够的可用存储空间;正如我们所见,存储是磁盘空间,并且 这些天磁盘很大。相反,会发生“内存不足”错误 因为该过程无法找到足够大的部分 在其虚拟地址空间中连续未使用的页面来执行 请求映射。

没有办法知道是否有连续的未使用页面可用。

当你遇到“内存不足”异常时,你能做的最好的事情就是优雅地死去。

【讨论】:

    猜你喜欢
    • 2012-12-11
    • 2017-08-12
    • 2012-04-14
    • 2017-12-15
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多