我的asp.net网站在20分钟内增长到2 GB并重新启动。 当我运行这个网站时,在localhost上抛出Visual Studio并更新一页30次网站增长约50-100 MB。 我试图在没有数据库连接和布局的情况下运行非常简单的页面。在这个页面上只有一个字。此页面网站的数百次更新后并未增长。 然后我尝试返回第一个(复杂)页面,但我已经在cshtml文件中注释了所有标记。此页面上只有布局。网站增长了 不显着。 然后我评论了布局,只留下了许多注入数据的简单表格标记。 30次更新后,网站再次增长约50-100 MB。
我曾尝试使用dotMemory来检测原因。它的一些截图:
告诉我是否可以为您提供更多信息。
第2代的碎片是97%。 (使用138 MB,220免费)。我不知道该怎么做。
我拍了2张快照。大多数新对象(和新字节)都是Char [],它是StringBulder的一部分,是PageExecutionContext的一部分,是CacheEntry的一部分。
我认为,这是一些视图缓存(cshtml文件)。但这只是猜测。
能帮助我解决这个问题吗?
答案 0 :(得分:0)
现在已经太晚了,但这是我的答案。
我有MVC 5.0并且遇到了同样的问题。升级到5.2.3后,它全部消失,内存使用率恢复正常。
答案 1 :(得分:0)
我找到了答案。我在EF中使用导航属性作为一个拥有大约10万个实体的集合。这个实体每秒都从DB加载,只是为了向这个集合添加新的实体。
解决方案:不要在如此大的集合中使用导航属性。对于添加实体,请使用DbContext中的DbSet。