我们在.NET 4.0,IIS 7,ASP.NET,4 GB服务器RAM上运行了一个图像转换脚本,可以调整大图像的大小,因此需要大量内存。
第一个脚本将内存使用率提高到几乎100%,几乎没有为正在运行的SQL Server留下任何内容(在运行20 MB而不是通常的900 MB之前放弃了内存)。
在第二个脚本中,我们添加了一个GC.Collect()和(确定)每个周期后一秒钟线程休眠,一切都恢复正常。
问题:这不是.NET内存管理中的一个缺陷吗?系统是否应该仔细查看可用内存发生的情况,减慢速度并清理?
答案 0 :(得分:4)
答案 1 :(得分:1)
是当内存不足以进行下一个操作时,垃圾收集会完成它的工作。但
声明为全局或由全局对象使用的对象不受GC的影响。因此,尽可能尝试将对象保持在本地。
答案 2 :(得分:0)
这可能是.Net内存管理中的一个缺陷。我们需要您的代码确定。
但我会首先查看您的代码,以了解一次性资源配置不当的情况。这已知会导致内存泄漏,这就是IDisposable接口存在的原因。