Singleton注入一个类 - 它是否会导致内存泄漏?

时间:2014-07-05 07:02:09

标签: .net vb.net memory-leaks singleton

我有一个MyClass类,它在构造函数(DI)中有一个MyThreadPool类型的参数。

MyThreadPool是一个单身。代码如下:

Public Class MyClass
    Private _threadPool as MyThreadPool

    Public Sub New(threadPool as MyThreadPool)
        _threadPool = threadPool
    End Sub
End Class

在MyClass中的私有字段(_threadPool)中保存单例MyThreadPool会导致MyClass的任何实例保留在内存中并且不会被GC收集吗?

1 个答案:

答案 0 :(得分:2)

不,因为MyClass 的实例 MyThreadPool的实例。这意味着MyClass的实例会使MyThreadPool的实例保持活动,但不会反过来。 MyThreadPool的实例没有引用MyClass的实例,因此无法使其保持活动状态。

考虑垃圾收集器跟随引用,探索它可以获得的每个对象。如果没有任何内容引用MyClass的实例,则它有资格进行垃圾回收。你无法进​​入&#34; <{1}}来自MyClass的实例,所以没关系。