我知道在C#中可以拥有的List的大小有限制(如here所述)。
假设我的硬件允许它,如果我让我的List在内存中增长并从那里使用它会不会很糟糕,显然只要它不超过它的容量?这样做我觉得有点顽皮。我希望我的机器可以在内存中进行几次演出。
如果没有,限制我的List然后推送到数据库的合理大小是多少?我的用例将包括异步(并且线程安全地)将引用类型附加到列表,以及基于它们的属性(例如基于时间)查询它(使用Linq)一组数据。该列表基本上是一个时间序列(即带时间戳的数据对象)。我希望能够对数据进行流式分析(例如移动平均值),以及基于时间的查找,这可能会返回整个列表。
让我们假设我的列表将持有最大的类对象(即引用类型),大约3-5百万。
更新
作为参考,我之前已将作为JSON附加到列表的对象写入文本文件(每行1个JSON)。 8,658项的.txt文件大小仅为1,570KB。将其外推至5米的物体接近1GB。
答案 0 :(得分:2)
.NET中List
的大小没有限制(除了您提供的链接中描述的硬限制)。除此之外,列表将在内存中增长,直到内存耗尽并抛出OutOfMemoryException
。这比达到硬编码限制更有可能。
不从集合中删除对象是C#代码中内存泄漏的原因之一。特别是当集合是静态的时,它确保它将一直存在,直到卸载AppDomain。
我会建议您跟踪物品,并在不需要时立即将其移除。