我是一名使用 C++ 和 .NET 等高级语言的开发人员。
我支持的其中一个外部应用程序即将升级。我已收到以下升级最低要求:
8 Core CPU - to support updating 10M records in a few hours
16G RAM - to allow project databases to be cached in memory
500G disk - to support project databases and backups
这是一个 32 位应用程序。我认为这意味着它只能使用 4GB 的 RAM。这总是正确的吗?32 位应用程序在以下方面是否有任何限制:
Clock speed
Number of cores in processor
Hard disk space
答案1
32 位进程可以使用的 RAM 数量没有特别限制。32 位进程一次只能直接映射 4GB 虚拟内存,但这是虚拟内存限制,而不是 RAM 限制。
例如,64 位计算机上的 32 位进程可以访问完全缓存在 RAM 中的 32GB 文件,从而读取和写入 32GB RAM。这只是最容易理解的例子,还有很多其他方法。“要求”中对缓存的引用似乎表明他们指的是类似的东西。
答案2
4 GB 是虚拟限制。2 GB 是 32 位进程的物理内存限制,除非应用程序与“LARGEADDRESSAWARE”标志相关联。这会在 PE 标头的特征部分中设置 0x0020 位。但应用程序在正常运行过程中也可能启动多个进程,每个进程都可能消耗自己的内存,因此我不会假设它在单个进程中使用了所有所需的内存。
应用程序供应商/提供商实际上想告诉你的是,如果你将应用程序放在具有 4 GB 内存的单处理器虚拟机上,其性能将不会很好。如果你回头问他们为什么,他们可能会重新向你发送之前的电子邮件,其中包含要求。