cgroup的内存管理机制 为什么会超用, 为什么超用了会kill, 能否收缩内存?

发布于 2022-08-31 09:20:26 字数 64 浏览 21 评论 0

疑问如题!!
小弟刚开始进入运维这一行,好多都不懂,希望懂的大哥帮忙啊!!!
谢谢各位帮助!!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

記柔刀 2022-09-07 09:20:26

程序可能确实存在一些「未被用到」的内存,这些内存通常是被 Runtime (在 C/C++ 里叫 Runtime, 在其他语言可能会叫虚拟机/VM) 管理的,在操作系统或者进程外部是不知道哪些内存是「未被用到」的,所以操作系统也无法帮助程序回收未被用到的内存。

某些占用内存比较高程序会提供一些方式来通知程序回收内存,例如向进程发送信号。但因为没有统一的标准,再加上即使回收未被用到的内存,也无法保证回到 cgroup 的内存限制之下,所以在这种情况下,直接 kill 进程成了唯一的办法。

再补充一下,操作系统还可能通过阻止程序申请更多的内存的方式来限制程序的内存,但似乎大多数程序在申请不到内存的时候都会崩溃,因此这种方式和直接 kill 掉区别也不大了。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文