Следующий код Rx.NET будет использовать примерно 500 МБ памяти примерно через 10 секунд на моей машине.
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();
Если я использую перегрузку Observable.Generate
без параметра Func<int, TimeSpan>
, мои платы использования памяти на 35 МБ.
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();
Кажется, что это проблема только при использовании методов расширения SelectMany() или Merge().