- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在使用下面的代码将大文件上传到服务器,并注意到将 FileStream 复制到 GetRequestStream 会创建字节数组并将其保存在内存中。这增加了大对象堆,我不想要它。也许有人知道如何解决这个问题?
Stream formData = new FileStream(.....)
HttpWebRequest request = WebRequest.Create(postUrl) as HttpWebRequest;
using (Stream requestStream = request.GetRequestStream())
{
Helpers.CopyStream(formData, requestStream);
requestStream.Close();
}
public static void CopyStream(Stream fromStream, Stream toStream)
{
try
{
int bytesRead;
byte[] buffer = new byte[32768];
while (fromStream != null && (bytesRead = fromStream.Read(buffer, 0, buffer.Length)) > 0)
{
toStream.Write(buffer, 0, bytesRead);
}
}
catch (IOException)
{
//suppress empty stream response
}
}
内存分析器图。在 GetRequestStream 内部创建字节数组
最佳答案
您可以使用 HttpWebRequest.AllowWriteStreamBuffering
禁用内部缓冲:
HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
request.AllowWriteStreamBuffering = false;
using (Stream formData = File.Open(fileName, FileMode.Open))
using (Stream requestStream = request.GetRequestStream())
{
formData.CopyTo(requestStream, 32768);
}
关于c# - WebRequest.GetRequestStream 和 LOH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13052679/
具有大量项目的.NET集合是否易于存储在LOH中? 我对列表和字典特别好奇。在我的代码中,我将大量(40k +)相对较小的对象(比如说1k)存储在临时列表和字典中以进行处理。这些收藏中的物品数量是否会
我有几百个 的实例我的类 存在于托管堆中。其中一些位于大对象堆中。下面是各种堆结构的样子 0:000> !EEHeap -gc Number of GC Heaps: 1 generation 0 s
在我的应用程序中,我需要将大文件(大约 250 MB)加载到内存中,我以一种惰性的方式进行——当用户要求查看文件时——我正在加载它。之后,每次用户尝试访问该文件时,我都能立即显示它,因为它已经位于内存
我们在 Server 2012 上有一个使用 WebApi 2、.NET 4.5 的 Web 服务。我们发现延迟偶尔会无缘无故地增加 10-30 毫秒。我们能够将有问题的代码片段追踪到 LOH 和 G
在与一位同事谈论一组特定的应用程序在启动时使用近 1.5G 内存时...他向我指出了一个很好的链接 .NET production debugging 让我困惑的部分是...... For examp
看了一些关于.Net/C#/CLR等的帖子和书籍,在微软2005年的presentation中找到了如下幻灯片: GC takes time – “% time in GC” counter If o
有很多关于 .NET LOH 的可用信息,并且已经在各种文章中进行了解释。但是,似乎有些文章不够精确。 过时信息 在Brian Rasmussen's answer (2009), program m
我正在使用下面的代码将大文件上传到服务器,并注意到将 FileStream 复制到 GetRequestStream 会创建字节数组并将其保存在内存中。这增加了大对象堆,我不想要它。也许有人知道如何解
我还有一个 Unresolved 问题 HERE关于一些可能涉及 LOH 碎片以及其他未知数的绝望内存问题。 我现在的问题是,公认的做事方式是什么?如果我的应用程序需要在 Visual C# 中完成,
我有一个类负责在下载管理器中下载文件。该类负责下载文件并将其写入给定路径。 要下载的文件大小通常在 1 到 5 MB 之间,但也可能更大。我正在使用 WebClient 类的实例从 Internet
我读到,在托管堆中固定对象会影响 .NET 中的 GC 性能,因为如果“妨碍”固定对象,GC 就无法压缩内存。但由于大型对象堆无论如何都不会被压缩,因此这不适用于 LOH 中的对象。固定 LOH 中的
我有一个 OData 响应作为 JSON (只有几 MB) 并且要求流式传输“JSON 的某些部分”,甚至不将它们加载到内存中。 例如:当我读取以下 JSON 中的属性“value[0].Body.C
已开发的新应用程序大量使用 Web 服务。我们开始定期遇到内存不足异常(随着使用量的增加)。在查看内存转储时,我注意到有大量相同大小的 byte[]。查看这些 byte[] 的句柄,我注意到它们被 S
好吧,这是我第一次尝试对 .NET 应用程序进行内存分析(我已经完成了 CPU 调整),但我在这里遇到了一些困难。 我的应用程序中有一个 View ,每页加载 40 张图片(最多),每张图片约 3MB
我是一名优秀的程序员,十分优秀!