我在使用并行计算的应用程序上工作。要知道我可以并行运行多少任务,我需要能够预测每个任务占用的内存量。
我知道(大约)每个任务将使用的每种类型的数据。
如何预测内存使用情况?使用流程指标执行运营研究?总结一下sizeof()s?
我在Windows 7,x64版上工作。每个任务都在一个单独的过程中运行。
答案 0 :(得分:1)
所以你实际上要做的是找到每个任务将占用的最大内存量。
有一个.net函数正是这样做的。它被称为Process::PeakWorkingSet64
:
Process p = Process.GetCurrentProcess();
int maxSizeInKb = (int) p.PeakWorkingSet64() / (float) 1024;
Console.WriteLine(maxSizeInKb + "KB");
在您的流程退出之前添加此代码,并以Kbytes为单位获取您想要的信息。
答案 1 :(得分:0)
在高峰运行时,为其中一个任务调用GetProcessMemoryInfo并获取特定任务(进程)的内存使用情况。您可能还希望通过在不同时间对不同任务调用此函数来获取此数据的样本,以获得更精确的平均值。