在我的机器上大约10秒后,以下Rx.NET代码将消耗大约500 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)));
stream.Subscribe();
Run Code Online (Sandbox Code Playgroud)
如果我使用Observable.Generate没有Func<int, TimeSpan>参数的重载我的内存使用量为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();
Run Code Online (Sandbox Code Playgroud)
使用SelectMany()或Merge()扩展方法时似乎只是一个问题.