我有一个生成大量数据的程序,它逐行写入csv文件(随着数据的创建)。如果我能够在excel中打开csv文件,它将是大约10亿个单元格(75,000 * 14,600)。我每次尝试访问它时都会抛出System.OutOfMemoryException(甚至创建一个这样大小的数组)。如果有人知道如何将数据带入vb.net,那么我可以做一些简单的操作(所有数据都需要立即可用)然后我会尝试你的每个想法。
我看过增加使用的ram数量,但其他文章/帖子说这将在10亿大关之前缩短。这里没有时间问题,假设它不超过几天/周我可以处理它(我每年只运行一次或两次)。如果您不知道这样做,我能想到的唯一其他解决方案是将excel中的列数增加到~75,000(如果可能的话 - 不能以相反的方式写入数据),或者我想如果有另一种语言可以解决这个问题吗?
目前它在开始时失败了:
Dim bigmatrix(75000, 14600) As Double
非常感谢, 弗雷泽:)
答案 0 :(得分:1)
首先,这将始终需要64位操作系统和相当大量的RAM,因为您尝试分配大约8 GB。
如果打开gcAllowVeryLargeObjects,这在理论上可以在Visual Basic中定位.NET 4.5。话虽这么说,如果可能的话,我建议使用jagged array而不是多维数组,因为这将消除需要单个8GB分配的要求。 (这也可能允许它在.NET 4或更早版本中工作。)