对于内存泄漏,有许多可用的工具,例如valgrind,您可以使用它们来找出泄漏来自何处。对于OpenGL泄漏,有glDEBugger,它对这类东西非常有用。
有没有类似的网络编程工具?尤其是在使用linux套接字和管道时。
也许有一个for-posix工具可以测量程序使用了多少posix资源(有多少套接字、多少线程、多少互斥锁等)。
另外,如果我错了,请纠正我,但高级语言(java、python等,而不是c++)能够像处理内存管理一样处理这些资源管理吗?
发布于 2011-02-22 00:45:53
Valgrind能够跟踪您感兴趣的一些资源:
通过memcheck
--track-fds=yes memcheck选项通过和生成的信息并不总是详细的,但它可以非常有帮助。
发布于 2011-02-22 00:56:18
strace和lsof可以(在一定程度上)帮助识别泄漏。几乎肯定会有一些内存与套接字、管道等一起分配,您可能能够使用内存调试工具来跟踪这些内存,特别是如果您有包装资源分配器的自定义类,在这种情况下,将大量未使用的数据添加到这些类中并在memcheck的结果中查找这些大型数据块可能是实际可行的。
高级语言可能能够也可能无法管理这些资源。例如,如果您正在使用一种高级语言访问相同的低级函数,那么很可能这些资源没有得到管理。但是如果资源被包装在可以被垃圾收集的类中,那么是的,我认为垃圾收集也可以处理这些资源。
https://stackoverflow.com/questions/5068469
复制相似问题