【问题标题】:Programmatically find how much RAM available以编程方式查找可用内存量
【发布时间】:2011-03-08 12:53:51
【问题描述】:

是否有一种可移植的方式,可以在各种支持的操作系统上同时在 .Net 和 Mono 上运行,让程序知道它运行的机器上有多少 RAM(即物理内存而非虚拟内存)可用?

上下文是一个程序,它的内存需求是“请尽可能多”;它需要知道它应该分配多少内存,同时停止进入交换(从而停止并锁定整个机器)。

【问题讨论】:

  • 请不要在标题中重复“.NET/Mono”之类的标签。这就是标签的用途。

标签: .net memory mono


【解决方案1】:

没有可移植的方式来做到这一点。更重要的是,由于内存使用的复杂性,系统可以以多种方式解释“尽可能多地”。例如,只需将每个正在运行的进程移动到交换位置,系统就可以为您提供几乎整个 RAM。

附:使用交换与锁定整个机器不同。可以将其视为一种可使用的较慢类型的 RAM。

【讨论】:

  • 相信我,当您尝试在具有消费级磁盘系统的机器上进行繁重的工作时,进入交换与锁定整台机器一样;-) 但很公平,我'将默认为一些保守的东西,并为用户提供一个命令行选项来调整。
  • 你想实现某种缓存吗?如果您的操作涉及磁盘访问,则无论如何都应该为操作系统保留缓存。您甚至可以打开 mmapped 文件来存储您的临时结果。但是,您应该尽量减少任何类型的临时结果,因为它会导致处理器缓存未命中,从而降低性能。
猜你喜欢
  • 2010-11-04
  • 2012-09-15
  • 2011-02-07
  • 1970-01-01
  • 1970-01-01
  • 2016-01-16
  • 1970-01-01
  • 2021-10-18
  • 1970-01-01
相关资源
最近更新 更多