繁体   English   中英

asp.net网站中的内存泄漏检测

[英]Memory leak detection in asp.net website

我的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文件)。 但这只是猜测。

能帮我解决这个问题吗?

这太晚了,但这是我的答案。

我有MVC 5.0并且遇到了同样的问题。 升级到5.2.3后,它全部消失,内存使用率恢复正常。

我被发现回答了。 我在EF中使用导航属性作为一个拥有大约10万个实体的集合。 并且这个实体每秒都从DB加载,只是为了向该集合添加新实体。

解决方案:不要在如此大的集合上使用导航属性。 对于添加实体,请使用DbContext中的DbSet。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM