C / C ++任何操作系统内存管理API:提示使用swap

问题描述

我正在使用占用大量内存(例如LightGBM)的库来开发软件。

我正在开发一个数据科学软件,该软件的特性是在不请求数据时动态减少RAM的使用,并根据需要根据需要从磁盘重新加载它,这是一种高级且可配置的交换,以进行总结。 因此,当我调用外部代码时,除了内存遵循相同的要求外。

在处理庞大的数据集时,内存使用量可以走到更多可用内存的位置,这是为了限制内存使用量以避免卡在100%的内存使用量上的想法。 一旦我不想在LightGBM的代码修改内存管理,因为这将意味着选择特定版本并在每次我想要更新时重新适应代码。在我的软件中,我可以通过编程方式限制(和以后发布)我的应用程序的物理RAM使用情况,以强制交换吗?

代码除外

some_function_before();
some_API::please_use_swap(/*threshold=*/16);
some_process_with_heavily_memory_usage();
some_API::end_requirement();
some_function_after();

如果还有其他方法可以解决此问题,我会选择它。

谢谢。

解决方法

Windows上有这样的API:SetProcessWorkingSetSize。您指出要使用多少物理RAM;其余的可以调出。

通常,这只是一个提示。 Windows可能会确定有足够的RAM,而完全忽略您的提示。