为什么ASP.Net Core 2.2不能释放内存?

10 浏览
0 Comments

为什么ASP.Net Core 2.2不能释放内存?

我正在测试ASP Net Core 2.2,使用从以下默认项目创建的:

Visual Studio > 文件 > 新建 > 项目 > ASP NET Core Web 应用程序 > 下一步 > 创建。

在界面上按下IIS Express按钮,自动跳转到https://localhost:44356/api/values

编辑:我的目的是测试ASP Net Core以防止人们进行暴力垃圾邮件攻击。

我只修改了这部分代码:

        [HttpGet]
        public ActionResult> Get()
        {
            return new string[] { "value1", "value2" };
        }

编辑:我将代码编辑为合理的测试代码,生成最小可重现的示例

// GET api/values
[HttpGet]
public ActionResult> Get()
{
    // 测试暴力攻击
    return Enumerable.Range(0, 100).Select(x => "Example Value").ToList();
}

开始的进程内存为80MB。

然而,当我尝试刷新页面时,初始内存持续增长:

edited test

编辑:事实证明,这个问题已经存在了两年,没有解决办法,并且有真实的示例经验

https://github.com/aspnet/AspNetCore/issues/1976

我很确定黄色箭头表示GC正常工作,但我的进程内存使用量在每个请求后并未下降。

我不确定这是ASP Net Core的特性还是bug,我期望在请求后内存减少/不会在每个用户GET /values时增加

编辑:我不希望人们危险地垃圾邮件攻击我的应用程序,并且由于内存泄漏而导致崩溃。如果这个问题尚未解决,我担心为我的公司使用Net Core。

为什么ASP Net Core 2.2不释放内存?

我已经在两台不同的笔记本电脑上进行了测试,结果相同。

编辑:我的同事也遇到了这个问题。

编辑:我已经尝试使用dot net core v2.1,结果相同。

我已尝试了GCCollect();结果相同。

旧图片参考。

开始的进程内存

进程内存持续增长

0