我正在开发的 C#/.NET 应用程序使用了巨大的字节数组,并且存在内存碎片问题。使用 CLRMemory 检查内存使用情况
我们使用的代码如下
PdfLoadedDocument loadedDocument = new PdfLoadedDocument("myLoadedDocument.pdf");
// Operations on pdf document
using (var stream = new MemoryStream())
{
loadedDocument.Save(stream);
loadedDocument.Close(true);
return stream.ToArray(); //byte[]
}
我们在整个应用程序的多个位置使用类似的代码,我们将其称为循环以生成从几百到 10000 的批量审计
- 现在有没有更好的方法来处理这个以避免碎片
作为审计的一部分,我们还使用以下代码从 Amazon S3 下载大文件
using (var client = new AmazonS3Client(_accessKey, _secretKey, _region))
{
var getObjectRequest = new GetObjectRequest();
getObjectRequest.BucketName = "bucketName";
getObjectRequest.Key = "keyName";
using (var downloadStream = new MemoryStream())
{
using (var response = await client.GetObjectAsync(getObjectRequest))
{
using (var responseStream = response.ResponseStream)
{
await responseStream.CopyToAsync(downloadStream);
}
return downloadStream.ToArray(); //byte[]
}
}
}
- 有没有更好的选择来下载大文件而不将它们移动到 LOH,这对垃圾收集器造成了损失