在C#中是否有一种节省内存的方法将200万个项目的集合保存在内存中?]?
该集合必须以某种方式可搜索,最好是通过LINQ查询,并且必须快速。
集合中的类型非常简单,没有长字符串:
public class Item { public string Name { get; set; } public string Category { get; set; } public bool IsActive { get; set; } public DateTimeOffset CreatedAt { get; set; } public IReadOnlyList<string> Tags { get; set; } }
将以上简单类型的
List<T>
用作class
或struct
仍需要大约2 GB的内存。 还有更好的方法吗?
是否有一种内存有效的方法来在C#中将200万个项目的集合保存在内存中?该集合必须以某种方式可搜索,最好是通过LINQ查询,并且它必须快速。 ...
您可以做这些点,然后看是否有麻烦:
如果您运行的是64位,我不会期望2M对象有任何主要的内存问题。列表的最大大小限制为2Gb,但是引用只有8个字节,因此列表应该在此限制之下。总内存使用量将主要取决于字符串的大小。也将有一些object overhead,但是如果您需要存储多个字符串,这很难避免。