У меня есть очень большой график, хранящийся в одномерном массиве (около 1,1 ГБ), который я могу хранить в памяти на моей машине под управлением Windows XP с 2 ГБ оперативной памяти и 2 ГБ виртуальной памяти.Я могу сгенерировать весь набор данных в памяти, однако, когда я пытаюсь сериализовать его на диск, используя BinaryFormatter
, размер файла достигает примерно 50 МБ, а затем выдает исключение нехватки памяти.Код, который я использую для написания этого кода, тот же, который я использую среди всех моих небольших проблем:
StateInformation[] diskReady = GenerateStateGraph();
BinaryFormatter bf = new BinaryFormatter();
using (Stream file = File.OpenWrite(@"C:\temp\states.dat"))
{
bf.Serialize(file, diskReady);
}
Алгоритм поиска очень легкий, и я могу без проблем выполнить поиск по этому графикуэто в памяти.
У меня действительно есть 3 вопроса:
Есть ли более надежный способ записи большого набора данных на диск.Я полагаю, вы можете определить большой размер, например, когда размер набора данных приближается к объему доступной памяти, хотя я не уверен, насколько это точно.центрический подход?
Может кто-нибудь указать мне на литературу о чтении частей большого набора данных из файла на диске в C #?