c++ - C++ 内存过量使用 Linux
问题描述
我目前正在编写一个基本上为客户端处理工作负载的服务器应用程序。根据实际工作量,服务器可能会使用大量内存。目标平台是 Windows 和 Linux,代码是用 c++ 编写的。
但是,我对 linux 编程不是很熟悉,在今天的一些测试中,我遇到了一些奇怪的崩溃。事实证明,这些与过度使用的内存有关。
我编写的代码相当健壮,可以通过在遇到 bad_alloc 异常时拆分和排队其工作负载来处理内存不足的情况(至少在 Windows 系统上)。重构所有代码以应对由于过度使用的内存而可能发生的错误将是一场彻头彻尾的噩梦。
所以,我想知道是否可以关闭我的进程和子线程的过度使用。我已经在这里找到了一个老问题Link (at stackoverflow) 回答为否,但意识到这是一个 10 年前的答案,我想知道这是否会改变?
如果仍然无法明智地转向应用程序,是否至少有一种方法可以在我的应用程序中检测它的当前设置?
提前致谢!
解决方案
所以,我想知道是否可以关闭我的进程和子线程的过度使用。我已经在这里找到了一个老问题 Link (at stackoverflow) 回答为否,但意识到这是一个 10 年前的答案,我想知道这是否会改变?
不,您仍然无法更改每个进程的过度使用设置。这是一个系统范围的设置。只有使用超级用户权限才能更改它。
是否至少有一种方法可以检测当前设置
您可以从 /proc 伪文件系统中读取它。特别是文件/proc/sys/vm/overcommit_memory
.
推荐阅读
- java - 如何使用 ActionListener 更改 JPanel 的颜色
- asp.net - 如何为 Asp.Net Core 3.1 中的所有路由 URL 添加动态前缀?
- java - 反转偶数位置词的逻辑
- laravel - laravel/elequent - 模型和关系
- azure - 如果复制列表中的服务器被禁用和删除,对本地服务器故障转移后正在运行的 VM 是否有任何影响?
- mongodb - 容器之间的通信在 docker 网络中不起作用
- c++ - 如何从 long long 转换为 DRAWITEMSTRUCT*
- python - 将参数传递给列表推导中的函数
- json - 有没有办法将 {"number1":5L,"number2":5L} 反序列化为具有长字段的类?
- javascript - 在 Chrome 上替代 msSaveOrOpenBlob