【问题标题】:Windows Task Manager shows process memory keeps growing even though there are no memory leaksWindows 任务管理器显示进程内存不断增长,即使没有内存泄漏
【发布时间】:2011-07-01 10:32:06
【问题描述】:

在 Windows 任务管理器中,我的应用程序不断消耗越来越多的内存,最终由于内存不足而崩溃。但是,当我使用 MemoryValidator(来自 www.softwareverify.com)检查泄漏时,没有检测到泄漏。为什么会这样?

【问题讨论】:

    标签: memory memory-leaks


    【解决方案1】:

    仅仅因为内存使用量不断增加并不意味着它一定会“泄漏”。您可以简单地累积大量活动对象和/或非常大的对象(包含大量数据)。

    如果您可以提供有关您使用的语言和应用程序正在做什么的更多信息,我或许可以提供一些更具体的信息!

    根据评论更新 好吧,您只需要确保垃圾收集正确进行。我建议 libgc 库来帮助解决这个问题。 http://developers.sun.com/solaris/articles/libgc.html

    我能想到的唯一其他原因是您无意中在某处维护对对象的引用,因此它们只是堆积起来。

    【讨论】:

    • 我的是一个 C++ 事务应用程序。在事务期间,它会创建大量对象并在事务结束时将其删除。所以记忆应该恢复到原来的样子。但在任务管理器中,它一直在稳步增加。
    • 我不需要在 C++ 应用程序中进行垃圾收集,因为我明确删除了不再需要的对象。我刚刚在互联网上找到了几页,例如codeproject.com/KB/dotnet/…,上面说任务管理器显示分配的内存而不是正在使用的内存。我想知道我是否错误地认为我的应用程序正在泄漏内存。上面的链接告诉使用 perfmon 检查应用程序的私有内存增长,但我无法在“实例”列表中找到我的应用程序。
    • @Hugh 'delete' 并不能完全证明是一种垃圾收集方法,我认为(尽管我不确定) ligbc 会解决分配问题(如果有的话) .不幸的是,这就是我所拥有的一切......祝你好运!
    猜你喜欢
    • 2014-03-19
    • 2013-01-06
    • 2016-07-11
    • 2016-08-15
    • 2019-11-11
    • 1970-01-01
    • 2020-03-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多