Następujący kod Rx.NET zużyje około 500 MB pamięci po około 10 sekundach na moim komputerze.Dlaczego to obserwowalne. Generowanie przeciążenia powoduje wyciek pamięci? [Używanie Timespan <15ms]
var stream =
Observable.Range(0, 10000)
.SelectMany(i => Observable.Generate(
0,
j => true,
j => j + 1,
j => new { N = j },
j => TimeSpan.FromMilliseconds(1)));
stream.Subscribe();
Jeśli używam przeciążenie Observable.Generate
bez Func<int, TimeSpan>
parametru moim wykorzystanie pamięci płaskowyże na 35 MB.
var stream =
Observable.Range(0, 10000)
.SelectMany(i => Observable.Generate(
0,
j => true,
j => j + 1,
j => new { N = j }));
// j => TimeSpan.FromMilliseconds(1))); ** Removed! **
stream.Subscribe();
Wydaje się, że jest to problem tylko przy użyciu metod rozszerzania SelectMany() lub Merge().
Zobacz http://stackoverflow.com/questions/41223723/observable-generate-with-timespan-selector-appears-to-leak-memory-when-using-a?noredirect=1&lq=1, aby uzyskać wyjaśnienie, dlaczego Dodałem kwalifikację TimeSpan do tytułu pytania. –