我有一个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收集吗?
答案 0 :(得分:2)
不,因为从MyClass
的实例到 MyThreadPool
的实例。这意味着MyClass
的实例会使MyThreadPool
的实例保持活动,但不会反过来。 MyThreadPool
的实例没有引用MyClass
的实例,因此无法使其保持活动状态。
考虑垃圾收集器跟随引用,探索它可以获得的每个对象。如果没有任何内容引用MyClass
的实例,则它有资格进行垃圾回收。你无法进入&#34; <{1}}来自MyClass
的实例,所以没关系。