【问题标题】:ARM/Linux memory leak: Can a user program retain memory after terminating?ARM/Linux 内存泄漏:用户程序可以在终止后保留内存吗?
【发布时间】:2010-12-05 10:57:06
【问题描述】:

我有一个内存泄漏某处,但它似乎与我的程序无关。我做出这个大胆的声明是基于这样一个事实,即一旦我的程序终止,无论是通过 seg-faulting、退出或中止,内存都不会恢复。如果我的程序是罪魁祸首,我会假设 MMU 会恢复一切,但事实并非如此。

我的问题是:

在一个小型 Linux 系统 (64 Mb Ram) 上运行一个只使用堆栈内存和几次调用 malloc() 的程序,是什么原因导致我看到内存被耗尽并在我的程序运行后停止运行终止?

一个相关的问题是here:


这一切都是在有问题的代码将其标准输出、标准错误定向到文件之后开始的。几个小时后,它因“分段错误”而中止。快速(天真的?)查看 /proc/meminfo 表明没有太多可用内存,所以我假设有什么东西泄漏了。

【问题讨论】:

  • 您能否解释一下您所看到的让您相信程序在终止后会保留内存的情况。我猜你误解了其他情况。
  • 这也是我的猜测。我最近被指出要查看块层缓存的内存。

标签: linux memory-leaks


【解决方案1】:

看来我没有内存泄漏(请参阅here),但它确实让我提出了一些新问题...


事实证明,写入块设备可以使用相当多的物理内存;在我的系统中只有 64 Meg,因此将数百 Meg 写入 USB 驱动器会大大增加缓存、活动和非活动内存池。

这些内存池在设备卸载时立即释放到空闲内存池中。

我的分段错误的确切原因仍然是一个小谜,但我知道通过更好地了解虚拟内存资源可以减少它的发生,特别是在使用块设备时。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-22
    • 2013-02-09
    • 2015-05-17
    • 1970-01-01
    • 2014-05-02
    相关资源
    最近更新 更多