我有一个长时间运行的进程,需要经常对 Active Directory 进行大量查询。为此,我一直在使用 System.DirectoryServices 命名空间,使用 DirectorySearcher 和 DirectoryEntry 类。我注意到应用程序中存在内存泄漏。
可以使用以下代码复制它:
while (true)
{
using (var de = new DirectoryEntry("LDAP://hostname", "user", "pass"))
{
using (var mySearcher = new DirectorySearcher(de))
{
mySearcher.Filter = "(objectClass=domain)";
using (SearchResultCollection src = mySearcher.FindAll())
{
}
}
}
}
这些类的文档说,如果不调用 Dispose(),它们会泄漏内存。我也尝试过不使用 dispose ,在这种情况下它只会泄漏更多内存。我已经用框架版本 2.0 和 4.0 对此进行了测试。以前有人遇到过这个吗?有什么解决方法吗?
更新:我尝试在另一个 AppDomain 中运行代码,但似乎也没有帮助。