C#:> 200万个对象的内存有效效率

问题描述 投票:0回答:2

在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>用作classstruct仍需要大约2 GB的内存。 还有更好的方法吗?

是否有一种内存有效的方法来在C#中将200万个项目的集合保存在内存中?该集合必须以某种方式可搜索,最好是通过LINQ查询,并且它必须快速。 ...

c# performance optimization memory-management in-memory
2个回答
0
投票

您可以做这些点,然后看是否有麻烦:


0
投票

如果您运行的是64位,我不会期望2M对象有任何主要的内存问题。列表的最大大小限制为2Gb,但是引用只有8个字节,因此列表应该在此限制之下。总内存使用量将主要取决于字符串的大小。也将有一些object overhead,但是如果您需要存储多个字符串,这很难避免。

© www.soinside.com 2019 - 2024. All rights reserved.