为什么ASP.Net Core 2.2不能释放内存?
为什么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。
然而,当我尝试刷新页面时,初始内存持续增长:
编辑:事实证明,这个问题已经存在了两年,没有解决办法,并且有真实的示例经验,
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();结果相同。
旧图片参考。