最近我注意到我的代码中有一个小错误,它使用了Reactive Extensions。我订阅了计时器,但从未释放我的订阅。这导致了内存泄漏。
我创建了一个片段来突出显示这个危险:
while (true)
{
Observable.Timer(TimeSpan.Zero, TimeSpan.FromMinutes(1)).Subscribe(Console.WriteLine);
}
这是正常行为吗?
调度器应该持有定时器的弱引用,以便在订阅者与应用程序的其余部分失去连接时进行垃圾回收,是吗?