GWR*_*GWR 2 .net c# asp.net memory-leaks image-processing
我正在处理一些图像处理脚本,.net并且发现了以下文章,概述了如何裁剪,调整大小,压缩等.
在第一条评论中,有人说文章中用于成像的方法因内存泄漏而臭名昭着:
向所有考虑在ASP.NET环境中使用System.Drawing(或GDI +)的人发出快速警告.它并不支持Microsoft和MSDN(截至最近)明确指出您可能会遇到内存泄漏.
然后,在第二条评论中,文章作者有效地说"我已经处理了这个问题":
只是为了弄清楚上面的代码并没有被抛在一起.它随着时间的推移而发展,因为正如您所建议的那样,在使用GDI +时很容易错误地创建性能问题.看看我上面写过"使用"的次数!
我想知道如何(或者是否)使用using有效处理(或改进)第一条评论中引用的内存泄漏问题.
这些using陈述没有做任何表现明智的事情.它所做的是Dispose在using声明的对象上调用方法.
调用Dispose将允许非托管资源(如GDI +为您的映像操作创建的资源)进行未分配.这将释放内存和Windows句柄.两者都可以帮助您的应用程序停止正常工作,因为如果内存或句柄耗尽,您的程序将无法运行.
一个using说法实际上是等同于(最终编译此):
var x = ...; // code from using intialization
try
{
... // code inside using statement
}
finally
{
((IDisposable)x).Dispose();
}
Run Code Online (Sandbox Code Playgroud)
即使发生异常,这也可确保处置对象.
| 归档时间: |
|
| 查看次数: |
227 次 |
| 最近记录: |