我正在寻找一种将内存预分配给进程(物理内存)的方法,以便在我调用 new/malloc 时绝对保证它对 C++ 堆可用。无论其他进程试图对系统内存做什么,我都需要这个内存可供我的进程使用。换句话说,我想为 C++ 堆保留物理内存,以便在我调用 malloc() 时它立即可用。以下是详细信息:
我正在开发一个实时系统。该系统由几个需要大量内存的进程组成。进程 A 是关键任务进程,它必须能够生存并且不受任何其他进程的不良行为的影响。它通常适合 0.5 GB 的内存,但有时需要多达 2.5 GB。其他进程尝试使用任意数量的内存。
我担心其他进程可能会分配大量内存,从而耗尽系统中的物理内存储备。然后,当进程 A 需要更多内存 FAST 时,它不可用,系统将不得不交换页面,这将需要很长时间。至关重要的是,进程 A 必须立即获得它需要的所有内存,而我对其他进程失败感到满意。
我在 Windows 7 64 位上运行。
编辑: SetProcessWorkingSetSize 会起作用吗?含义:调用它以获得足够大的内存量可以保护我的进程 A 免受系统中任何其他进程的影响。