The following Rx.NET code will use up about 500 MB of memory after about 10 seconds on my machine.
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();
If I use the Observable.Generate
overload without a Func<int, TimeSpan>
parameter my memory usage plateaus at 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();
It seems to only be a problem when using SelectMany() or Merge() extension methods.