【问题标题】:How to limit memory available to a process? [duplicate]如何限制进程可用的内存? [复制]
【发布时间】:2014-08-05 09:59:17
【问题描述】:

假设我有两个进程。一个关键的,一个很好的流程。

现在,假设 nice to have 进程开始泄漏内存。如何阻止泄漏进程耗尽所有系统内存并导致关键进程崩溃或变慢?

我希望非关键进程在使用的内存超过某个阈值时直接终止或抛出std::bad_alloc

【问题讨论】:

  • 我想一种方法是简单地有一个线程来检查内存使用情况,如果超过它就调用std::terminate。尽管在new 上获得std::bad_alloc 将是一个更好的解决方案,至少该过程可以尝试从中恢复。

标签: c++ windows memory-leaks process


【解决方案1】:

AFAIK Windows 不支持 ulimit 样式限制,因此最好的办法是编写一个看门狗程序,检查进程的内存(和/或其他资源使用情况)并在需要时终止它们。

顺便说一句,我不会打赌程序在事情已经一团糟时会自行终止。

另请参阅:EnumProcessGetProcessWorkingSetSize

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-27
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 2011-06-18
    • 2011-01-24
    • 2011-10-03
    • 2017-05-21
    相关资源
    最近更新 更多