Однако после запуска следующего теста .NET 8 результаты оказались не такими, как я ожидал – почему во время этого процесса было использовано более 2 ГБ памяти – я совершенно неправильно понял, что должно быть происходит
Код: Выделить всё
[MemoryDiagnoser(true)]
[Orderer(SummaryOrderPolicy.FastestToSlowest)]
[ShortRunJob]
public class DeserializationBenchmarks
{
[Benchmark]
public async Task StreamJsonAndDeserialize()
{
var options = new JsonSerializerOptions { PropertyNameCaseInsensitive = true };
var peopleJson = File.OpenRead("./peeps.json"); //1GB+
var people = JsonSerializer.DeserializeAsyncEnumerable
(peopleJson, options);
await foreach (var person in people)
{
await Console.Out.WriteLineAsync(person.Name);
}
await peopleJson.DisposeAsync();
}
}
// The json file is just an array of this simple Person object
public class Person
{
public string Id { get; set; }
public string Name { get; set; }
public string Language { get; set; }
public string Bio { get; set; }
public double Version { get; set; }
}

Я пытался настроить размер буфера, но безуспешно, я также пытался обнулить каждый объект person после его десериализации, чтобы гарантировать, что он получит GC (возможно, бессмысленно) - я надеюсь десериализовать этот файл в более эффективное использование памяти
Подробнее здесь: https://stackoverflow.com/questions/787 ... a-1gb-file