【发布时间】:2018-07-18 11:25:37
【问题描述】:
我使用 C# SCOM SDK 将我们的性能和事件数据收集到 SCOM 1801。
为了连接到管理组,我使用下一个代码:
var settings = new ManagementGroupConnectionSettings(serverName)
{
//CacheMode = CacheMode.None,
UserName = userName,
Domain = domain,
Password = ToSecureString(password)
};
var managementGroup = ManagementGroup.Connect(settings);
一切正常。
但是调用managementGroup.Dispose()方法后GC并没有清理内存。
我已经使用 VS 内存配置文件查看了内存。
我可以看到下一个情况:
当然,我可以使用属性CacheMode=CacheMode.None 禁用缓存
ManagementGroupConnectionSettings类。
但在这种情况下,SCOM SDK 的运行速度非常非常慢。
所以我认为正确的方法是使用缓存,在必要的工作后需要删除缓存。
如何删除 SCOM SDK 客户端缓存?
【问题讨论】:
-
你打电话给
GC.Collect()了吗? -
@Sinatr 是的,我做到了:
managementGroup.Dispose(); GC.Collect();但是缓存是存在的。我认为我们需要运行额外的 SCOM SDK 方法来清理缓存。我已经查看了许多文档链接,但不知道我该怎么做...
标签: c# memory-leaks dispose scom