Mã Rx.NET sau sẽ sử dụng hết khoảng 500 MB bộ nhớ sau khoảng 10 giây trên máy tính của tôi.Tại sao quá tải Observable.Generate này gây ra rò rỉ bộ nhớ? [Sử dụng 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();
Nếu tôi sử dụng quá tải Observable.Generate
mà không có một tham số Func<int, TimeSpan>
cao nguyên sử dụng bộ nhớ của tôi lúc 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();
Dường như chỉ là vấn đề khi sử dụng phương pháp mở rộng SelectMany() hoặc Merge().
Xem http://stackoverflow.com/questions/41223723/observable-generate-with-timespan-selector-appears-to-leak-memory-when-using-a?noredirect=1&lq=1 để giải thích lý do Tôi đã thêm tiêu chuẩn TimeSpan vào tiêu đề câu hỏi. –