Warm tip: This article is reproduced from serverfault.com, please click

其他-内存泄漏是否总是会导致高内存消耗?

(其他 - Should memory leak always results high memory consumption?)

发布于 2020-11-27 15:30:12

我的客户正在使用RHEL,他们遇到的问题对我来说似乎是内存泄漏。

但是我的客户告诉我有大量可用内存,消耗量是合理的。

所以我的问题是,如果发生内存泄漏,是否不可避免要面对内存消耗问题?还是在某些情况下,内存泄漏可能导致更多其他问题而没有内存消耗?

Questioner
muhammad
Viewed
0
prapin 2020-11-28 16:58:44

内存泄漏是我们开发人员绝对不希望发生的事情,应该在出现时予以修复。

但是,内存泄漏在实践中并不一定是问题。除非OS内核本身存在错误或内存泄漏,否则某些错误软件中发生的所有泄漏内存将在程序终止时自动释放。因此,内存泄漏的严重性实际上取决于实际数字:

  • 平均内存泄漏率是多少(以字节/秒为单位)?
  • 预期的程序寿命是多少秒(以秒为单位)?
  • 系统上有多少可用内存?

例如,除非你对此文件进行配置,否则一个小实用程序每秒泄漏1 KB的内存仅在1秒内在32 GB的计算机上运行,​​则完全不会引起注意。但是,如果该实用程序是生产服务器上的永久守护程序,则将成为一个问题:分配的内存量每天将增加86 MB,并且在正常运行时间一年后,该守护程序将泄漏31.5 GB,与系统内存。

但是即使在后一种情况下,系统也可能会继续平稳运行,因为所有泄漏的内存很可能会永久地交换到磁盘上,因为当丢失指向它的指针时无法再访问泄漏的内存。

编写良好的软件而不会发生任何内存泄漏,可以很好地为其分配GB的内存。这比初学者编写的完全天真的程序要消耗的内存要多得多,后者会泄漏掉全部的几千字节。

所以我的结论是,这取决于。尽管通常应避免,但大多数时候用户程序中的内存泄漏都不是问题。在OS内核和守护程序软件中,它们通常很关键。