Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 我是否最好为我的进程保留内存?_C++_Windows_Memory_Memory Management - Fatal编程技术网

C++ 我是否最好为我的进程保留内存?

C++ 我是否最好为我的进程保留内存?,c++,windows,memory,memory-management,C++,Windows,Memory,Memory Management,我写了一个处理文件的程序。在空闲状态下,进程占用的内存约为60 MBs。进程周期性地(比如每2分钟)分配内存(~40 MB),对文件执行某些操作,然后释放分配的内存。这个过程大约需要10~20秒。因此,我的进程的内存使用情况如下图所示: 我的问题是:我是否应该事先保留一些内存,然后在需要时使用这些内存?这将使内存使用趋势更加稳定系统的稳定性会更好,对吗?如果你提前分配内存,比如说额外的50MB,就像你说的那样,图形将是一条直线(即稳定的),但是争夺内存的程序可能得不到足够的内存,它们会因此受到

我写了一个处理文件的程序。在空闲状态下,进程占用的内存约为60 MBs。进程周期性地(比如每2分钟)分配内存(~40 MB),对文件执行某些操作,然后释放分配的内存。这个过程大约需要10~20秒。因此,我的进程的内存使用情况如下图所示:


我的问题是:我是否应该事先保留一些内存,然后在需要时使用这些内存?这将使内存使用趋势更加稳定系统的稳定性会更好,对吗?

如果你提前分配内存,比如说额外的50MB,就像你说的那样,图形将是一条直线(即稳定的),但是争夺内存的程序可能得不到足够的内存,它们会因此受到影响。

不,如果你这样做,任何21世纪的操作系统都不会眨眼。如果您尝试在100个CPU核上分配超过4GB/毫秒的内存,事情可能会变得有趣,但你甚至还没有接近这一点。

只是出于好奇:你为什么担心内存使用趋势?分配和释放~40MB内存最多不可能超过几毫秒,也不可能在任何可测量的程度上提高你的性能。您希望通过这样做实现什么?@tobi303我的意思是脉冲内存使用对操作系统有好处吗?@Rotem首先分配内存(~40 MBs),并将内存用作缓冲区来处理文件。完成文件处理通常需要约20秒(或更长时间)。通常,代码中分配的内存与任务管理器中显示的内存使用量并不直接对应。事实上,我对这些怪癖有点惊讶。也可能是操作系统只在程序完成时释放内存。我不会过多地关注您在任务管理器中看到的内容,但如果您真的想研究程序的内存使用情况,您可以使用其他诊断工具。100 CPU内核?我想要你的电脑。