我有一个静态方法,它调用WMI管理对象并序列化结果。它工作得很好,但它像筛子一样泄漏记忆。每次运行它大约20k。 (即使所有序列化都关闭了。)
我已经在.Net 2.0,3.0,3.5中进行了测试,内存泄漏始终保持不变。
我做错了吗?或者有没有办法装箱这种方法,以便它完成时泄漏的东西在完成后被抛出。 (比如在儿童过程中装箱)
using (ManagementObjectSearcher searcher = new ManagementObjectSearcher(query))
{
try
{
using(ManagementObjectCollection moList = searcher.Get()){
foreach (ManagementObject mo in moList)
{
try
{
// Do serialization here. Return object will be a List<GenereicObjectType>
}
catch (Exception ex)
{
Debug.Error(ex);
}
finally
{
if (mo != null)
{
try {
mo.Dispose();
}
catch { }
}
}
}
}
}
catch (Exception ex)
{
Debug.Error(ex);
}
}