繁体   English   中英

Unity容器内存泄漏

[英]Unity Container Memory Leaks

嗨,我正在一个项目中,该项目使用Enterprice Libraries的Unity容器解析异常处理,缓存,日志记录和数据库访问的依赖关系,但我们不断将大量泄漏的对象存储到内存中。

我们正在像这样使用属性注入:

[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.WrapHandlerData Microsoft.Practices.EnterpriseLibrary.Common.Configuration.GenericEnumeratorWrapper Microsoft.Practices.EnterpriseLibrary.Caching.Configuration.CacheManagerData Microsoft.Practices.EnterpriseLibrary.Caching.Configuration.CacheManagerSettings
Microsoft.Practices.EnterpriseLibrary.Caching.Configuration.CacheStorageData

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

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

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

而且,这比Unity问题更是一个企业库问题-我知道Unity本身不会泄漏。

您是否正确处理了数据库实例? 例如(使用db = new Database()){....}?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM