c# - Unity 容器内存泄漏

标签 c# .net memory-leaks unity-container enterprise-library

您好,我正在开发一个使用 Enterprice Libraries 的 Unity 容器解决问题的项目 异常处理、缓存、日志记录和数据库访问的依赖项,但我们不断将大量泄漏的对象存入内存。

我们像这样使用属性注入(inject):

[Dependency]
public Database DB
{
  get { return db; }
  set { db = value; }
}
[Dependency]
public ExceptionManager ExceptionMgr
{
  get { return exceptionManager; }
  set { exceptionManager = value; }
}

部分对象泄露:

Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Configuration.ExceptionHandlingSetti Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.LoggingSettings
Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Configuration.ExceptionPolicyData
Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Configuration.ReplaceHandlerData
Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Configuration.WrapHandlerDataMicrosoft.Practices.EnterpriseLibrary.Common.Configuration.GenericEnumeratorWrapper Microsoft.Practices.EnterpriseLibrary.Caching.Configuration.CacheStorageData

关于使用 Unity 处理依赖项以避免对象泄漏的一般建议?

最佳答案

您列出的所有对象都是配置系统的一部分。你如何初始化你的容器?只是调用“AddNewExtension()”?如果是这样,那不是真正的泄漏,因为这些对象代表您加载的配置。配置源(保存在这些对象上的内容)在应用的整个生命周期内一直存在,以便它可以监视并通知您应用中的更改。

您运行的哪些工具告诉您它们正在泄漏?泄漏是在增加还是持续不断?一些细节将有助于将行为从“预期”缩小到“糟糕的实际错误”。

此外,这更像是一个企业库问题,而不是一个 Unity 问题 - 据我所知,Unity 本身并没有泄漏。

关于c# - Unity 容器内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3877573/

相关文章:

c# - Foreach 在带有元素的非空 IEnumerable 上抛出 NullReferenceException

asp.net - 我想根据我从数据库获取的项目和图像的数量从 C# 代码隐藏创建 Bootstrap 图像容器和模式

android - 从调试应用程序中暂时禁用泄漏金丝雀

c# - PInvoke 的字符类型**

c# - 不能将 null 值分配给类型为 System.Int64 的成员,该类型是不可为 null 的值类型

c# - 从 <div class> 获取带有 <a href> child 的 innerText

c# - 如何使用C#和.net 4内置图表控件绘制图表?

.net - 为 WPF 中的绑定(bind)公开子控件依赖属性

c++ - 内存泄漏与否?

ios - 使用 NSURLSession.downloadTaskWithURL 时的内存泄漏