我在Windows上运行的ASP .NET Core 2.1应用程序遇到问题,这会增加其内存消耗,直到最终崩溃并要求终止.NET Core Host
进程。我怀疑原因可能是每小时在后台运行一次同步任务,并且我已经确认禁用它可以解决问题。
我一直在使用VisualStudio 2019诊断工具来分析此同步任务,但发现了我不理解的行为:
如您所见,我已经拍摄了3张快照:
在快照表中,我看到了一个似乎对我来说合理的行为:在任务(2)期间,堆大小显着增加,在退出范围(3)时,堆大小几乎减小为初始大小(1)。但是,“ Process Memory”图表显示了一个不同的情况:内存消耗增加了,但从未减少。
我已经在发布模式下以dotnet run
启动了该应用程序,并且在查看.NET Core Host
进程使用的内存时看到了相同的行为。
我有两个问题:
备注:我已经用一个没有依赖性的简单.NET Core控制台应用程序(2.1和2.2)重现了相同的行为,因此它没有链接到ASP部件或任何其他库: / p>
internal class Program
{
private static void Main()
{
new Whatever().AllocateSomeStrings();
// Snapshot3
Console.ReadKey();
}
}
public class Whatever
{
public void AllocateSomeStrings()
{
// Snapshot1
List<string> numbers = Enumerable.Range(0, 50000).Select(n => n.ToString()).ToList();
// Snapshot2
}
}