我有一个非常大的图形数据存储在一维数组中(约为1.1 GB),我可以将其存储在我的机器上,该机器运行Windows XP,具有2GB的RAM和2GB的虚拟内存。我能够在内存中生成整个数据集,但是当我尝试使用BinaryFormatter
将其序列化到磁盘时,文件大小达到约50MB,然后出现内存不足异常。我使用的写入代码与我在所有较小问题中使用的代码相同:
StateInformation[] diskReady = GenerateStateGraph();
BinaryFormatter bf = new BinaryFormatter();
using (Stream file = File.OpenWrite(@"C:\temp\states.dat"))
{
bf.Serialize(file, diskReady);
}
这个搜索算法非常轻量级,一旦它在内存中,我能够毫无问题地在图上进行搜索。
我有三个问题:
是否有更可靠的方法将大数据集写入磁盘?我想你可以将大定义为当数据集的大小接近可用内存量时,尽管我不确定这是多么准确。
我应该转向更依赖数据库的方法吗?
有人能指引我阅读关于在C#中从磁盘文件读取大数据集部分的文献吗?