【发布时间】:2011-05-21 15:40:21
【问题描述】:
我正在使用 HttpWebRequest 对象通过带有客户端证书的 SSL 上传文件,我的服务器上有一个有效的证书,我的应用程序存在内存泄漏问题,Microsoft 在以下位置发布了与该问题相关的内容链接:
FIX: Memory Leak When SSL and Client Certificates Are Used With the HttpWebRequest Object
是否有任何解决方法来避免这种内存泄漏,特别是每个请求都消耗 8K 泄漏内存,这将导致我的应用程序消耗这么多内存。
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
ServicePointManager.ServerCertificateValidationCallback += new RemoteCertificateValidationCallback(ValidateRemoteCertificate);
request.Method = "POST";
request.ContentType = "text/xml; charset=utf-8";
使用.NET Memory Profiler 检测到内存泄漏,它显示HttpWebRequest 对象具有泄漏内存的字节数组,我正在处理流和请求对象。
我已经用SSL 和without SSL 尝试过这种情况,泄漏在非SSL 请求中消失了。
【问题讨论】:
-
我们无法帮助您拨打电话号码。
-
如果您注意到文章 ID:831578 - 上次评论:2005 年 10 月 25 日 - 修订:1.5 我想也许有人遇到过同样的问题已经 6 年了。
-
该泄漏仅适用于 .NET 1.1。为什么你相信你会遇到它? (假设你没有运行 1.1)
-
@blowdart:因为当我停止使用 SSL 时,内存泄漏不再存在。
-
但是您还没有说如何检测泄漏,毕竟很难找出托管代码中的泄漏,可能只是 GC 还没有清除。或者更进一步,您正在执行流操作而不是处理流。在任何人提供帮助之前,这需要更多信息 - 如何检测泄漏、数字是多少、windbg 堆栈转储、围绕这四行的其余代码等。知识库文章尚未更新的事实表明该修复程序已进入 2.0 及更高版本。
标签: c# windows ssl memory-leaks httpwebrequest