如何追踪手柄泄漏?

jpf*_*ius 5 windows delphi resource-leak delphi-xe

在我的一个应用程序中,我观察到越来越多的句柄.在不使用应用程序的情况下,该数字大约每秒递增一次,因此后台处理代码的某些部分必须存在句柄泄漏.

我该如何追踪这些泄漏?有没有工具可以帮助解决这个问题?跟踪句柄泄漏时要查找的模式是什么?导致手柄泄漏的最常见错误是什么?

一堆问题,但我希望它们足以将它们放在一个问题中.感谢提前输入!

Pet*_*erK 5

我建议使用Process Explorer。以管理员身份运行它,以确保您看到所有相关数据。在这里,您可以观察到您的过程具有哪种类型的句柄,以及过度创建了哪些句柄而没有释放它们的过程。这应该可以帮助您缩小搜索范围(在我的情况下,由于关于winsocks行为的一些错误假设,我的套接字到处都有泄漏)。也许然后您可以隔离相关代码并将其发布在这里,以供我们检查是否有任何错误。祝好运!


小智 5

某些分析器(即AQTime)可以分析Windows资源应用程序.如果您正在使用XE,则可以使用基本版本的AQTime.

如果执行路径没有正确关闭它们,则句柄泄漏很常见 - 但在Windows中句柄是一个非常常见的项目,在很多不同的情况下使用,哪种句柄是你的应用程序泄漏?