2010-06-26 53 views
3

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

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

+0

请不要在标题中重复标签中的“.NET/Mono”等标签。这就是标签的用途。 – 2010-06-26 02:42:40

回答

3

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

P.S.使用交换不像锁定整个机器一样。把它看作只是一种可用的较慢类型的RAM。

+1

相信我,当你试图在用消费级磁盘系统的机器上进行沉重的紧缩时,进入交换与锁定整个机器是一样的;-)但足够公平,我只是默认一些保守的并为用户提供一个命令行选项来调整。 – rwallace 2010-06-26 03:56:12

+1

你想实现某种缓存吗?如果在您的操作中涉及磁盘访问,则应该为操作系统保留缓存,因为它无论如何都是这样。您甚至可以打开mmapped文件来存储临时结果。但是,您应该尽量减少任何类型的临时结果,因为它会导致处理器缓存未命中而导致性能下降。 – 2010-06-28 08:02:04

相关问题