c# - Rx.Net 内存泄漏
问题描述
一个有趣的内存泄漏。有谁知道为什么?
foreach (int x in Enumerable.Range(0, 1_000_000)
.Select(async i => i))
{
}
GC.Collect();
Console.WriteLine(GC.GetTotalAllocatedBytes()); // 1036542160
foreach (int x in Enumerable.Range(0, 1_000_000)
.Select(async i => i))
{
}
GC.Collect();
Console.WriteLine(GC.GetTotalAllocatedBytes()); // 2072860704
foreach (int x in Enumerable.Range(0, 1_000_000)
.Select(async i => i))
{
}
GC.Collect();
Console.WriteLine(GC.GetTotalAllocatedBytes()); // 3109160008
在哪里:
static class SelectAsync
{
public static IEnumerable<TResult> Select<T, TResult>(
this IEnumerable<T> source, Func<T, Task<TResult>> selector) =>
source
.ToObservable()
.Select(value => Observable.FromAsync(() => selector(value)))
.Concat()
.ToEnumerable();
}
解决方案
推荐阅读
- android-studio - Visual Studio 表示,尽管将目录列入白名单,但诺顿仍在降低构建性能
- docker - Docker 容器内 Nginx 设置的 AWS/SSL 证书
- c# - 使用 JsonConvert.DeserializeObject 在 c# 中反序列化多维 json 对象时出现问题
- python - 使用 python 重新运行 maxent
- git - Azure Devops Git 标记未通过 powershell API 调用列出
- powershell - 如何从 PS 模块路径加载 dll
- javascript - 将值从文本区域传递给 PHP
- msbuild - 跳过项目“SetupWix.wixproj”的恢复。项目文件可能无效或缺少恢复所需的目标 (NU1503)
- excel - Excel -VBA+API - 添加列并从每日 API 获取历史数据的最高效解决方案
- c# - ASP Core Razor 语法@for -> 具有不同输入的多个提交按钮?