我们有一个在 .NET 4.0、IIS 7、ASP.NET、4 GB 服务器 RAM 上运行的图像转换脚本,用于调整大图像的大小,因此需要大量内存。
第一个脚本将内存使用率增加到几乎 100%,几乎没有为正在运行的 SQL Server 留下任何内存(它放弃了内存,直到运行在 20 MB 而不是通常的 900 MB 上)。
在第二个脚本中,我们添加了 GC.Collect() 和(当然)每个周期后一秒的线程睡眠,一切都恢复正常。
问题:这不是 .NET 内存管理中的一个缺陷吗?系统难道不应该仔细查看可用内存的情况,放慢速度并进行清理吗?
根据docs:
垃圾收集发生
当请求时自动
使用内存无法满足
可用的空闲内存。
我认为这种情况还没有得到满足,因为 SQL Server 正在退缩。至于它是一个错误;文档会建议这是设计使然。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)