以编程方式查找可用的RAM量

3

有没有一种便携式的方法,在各种支持的操作系统上,同时在.Net和Mono上工作,让程序告诉它正在运行的机器上有多少RAM(即物理而非虚拟内存)可用?

背景是一个需要尽可能多地使用内存的程序;它需要知道应该分配多少内存,同时避免进入交换空间(从而导致整个机器停止运转并锁死)。


请不要在标题中重复使用像“.NET/Mono”这样的标签。那是标签的作用。 - John Saunders
1个回答

3

没有通用的方法来做到这一点。此外,由于内存使用的复杂性,系统可能会以多种方式解释“尽可能多”。例如,系统可以通过将每个正在运行的进程移动到交换空间中来使几乎整个RAM可供您使用。

P.S. 使用交换空间并不意味着锁定整个计算机。把它看作是一种更慢的可用于使用的RAM类型。


1
相信我,在使用消费级磁盘系统的机器上进行大量计算时,进入交换空间就等同于整个机器被锁定;-)但好吧,我会默认选择一些保守的选项,并为用户提供命令行选项以进行调整。 - rwallace
1
你想要实现某种缓存吗?如果你的操作涉及磁盘访问,那么你应该让操作系统来处理缓存,因为它本来就会这样做。你甚至可以打开 mmapped 文件来存储临时结果。然而,你应该尽量减少任何形式的临时结果,因为它会导致处理器缓存未命中,从而降低性能。 - user283145

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接