【发布时间】:2018-12-02 08:25:12
【问题描述】:
我有一个单片软件,一个基于基本 linux 内核的游戏,它似乎在交换空间中泄漏内存。进程本身的内存使用情况在一天左右报告为恒定,但系统上的可用内存一直在减少,直到没有更多的物理内存空间。 除了标准的 X 服务器和 debian 系统守护程序之外,没有其他软件在运行。连接了许多使用 libusb 的 USB 设备。
这不是典型的新建/删除泄漏。
我不知道在哪里寻找已消耗但未释放的系统资源。它不是 OpenGL,所有分配的 OGL 内存都被释放,我在日志中看到了这一点。但是,驱动程序是否有可能在流程之外出现行为不端?
所以基本上问题是,程序可以使用哪些类型的资源,如果不释放,即使在程序退出后也会继续泄漏系统内存?
可能的项目: 我读过 mmap 的地方,如果使用不正确会泄漏系统内存。 但是在这个软件中使用的地方并没有在这个测试用例中运行。
【问题讨论】:
-
标题具有误导性,听起来您是在询问有关泄漏内存的方法的建议,而不是有关如何追踪泄漏的建议。
-
我的意图并不重要,问题保持不变。程序退出后如何创建/哪些方法会造成内存泄漏?
-
你试过在valgrind下运行程序吗?
-
是的,我说“这不是典型的新建/删除泄漏”。 Valgrind 报告一切正常。
-
在 linux 上内存不能“无处”。您可以随时查看它的去向。看这里:binarytides.com/linux-command-check-memory-usage
标签: c++ c linux memory-leaks