Windows-Unix / Linux系统是否容易泄漏全局内核对象?
作者:互联网
在Windows中,系统维护着一些对象-事件,文件访问句柄,窗口,计时器等,这些对象不是无限的,因此系统中的所有程序最多只能创建5万个对象(我不确定确切的数字,但这对这个问题不是很关键).
因此,如果某个程序运行了很长时间并且创建了很多对象并且没有释放它们(就像内存泄漏一样,但是这里的系统对象泄漏了),那么系统最终会用尽对象和其他尝试执行某些操作的程序需要创建任何新的系统对象的操作开始从系统功能中获取错误指示.例如,程序A运行并泄漏了系统可用的所有对象,然后程序B试图打开文件并失败,仅是因为系统没有资源可以处理该请求.此时唯一的解决方案是重新启动程序A,以便泄漏的资源被系统回收.
在Unix / Linux系统上是否存在相同的问题?
解决方法:
它们也遇到相同的问题,但是可以在一定程度上得到加强/限制.通常,默认情况下,每个进程的限制都低于任何会导致系统范围问题的限制.不过,您要做的就是开始很多过程.可以通过ulimit命令查看其中一些限制.一些* nixes可以基于每个用户设置限制(请参阅某些linux系统上的/etc/security/limits.conf).
但是,如果您删除了限制,或者有很多进程在做坏事情,则系统范围的总限制通常受可用资源(内存)的约束.
如果要演示资源限制,请在bash shell中运行this command,然后查看系统是否仍然可用:
:(){ :|:& };:
标签:operating-system,unix,resources,linux,windows 来源: https://codeday.me/bug/20191023/1913130.html