Unikanie LOH podczas czytania pliku binarnego
To pytanie jest kontynuacjąSkuteczny sposób przesyłania wielu plików binarnych do bazy danych SQL Server
Pierwotnie zapytałem, dlaczego używaćFile.ReadAllBytes
powodowało szybkie użycie pamięci i przy użyciu tej metody wyciągnięto dane ze sterty dużych obiektów, których nie można łatwo odzyskać w czasie wykonywania.
Moje pytanie brzmi: jak uniknąć tej sytuacji?
using (var fs = new FileStream(path, FileMode.Open))
{
using (var ms = new MemoryStream())
{
byte[] buffer = new byte[2048];
int bytesRead;
while ((bytesRead = fs.Read(buffer, 0, buffer.Length)) > 0)
{
ms.Write(buffer, 0, bytesRead);
}
return new CustomFile { FileValue = ms.ToArray() };
}
}
Poniższy kod miał na celu obejście problemu poprzez odczytanie pliku w kawałkach zamiast na raz, ale wydaje się, że ma ten sam problem.