C# 如何在C中释放泛型列表对象内存#

C# 如何在C中释放泛型列表对象内存#,c#,silverlight,memory,C#,Silverlight,Memory,在Silverlight应用程序中,我创建了一个带有自定义类的通用列表对象。我在里面有大约30万条记录。我必须经常将不同的数据绑定到同一个列表,但有时会出现内存不足错误 如何在C#.NET中释放自定义类的泛型列表的内存。只在列表中存储您需要的内容我认为,从列表中删除未使用的项就足够了。因此,该名单没有增加到300000条记录。 如果没有对对象设置引用(ReferenceCounter==0),gc将收集它,。。。将来…… 因此,我认为你的主要问题应该是,你想对30多万条参赛作品做些什么?是否有必

在Silverlight应用程序中,我创建了一个带有自定义类的通用列表对象。我在里面有大约30万条记录。我必须经常将不同的数据绑定到同一个列表,但有时会出现内存不足错误


如何在C#.NET中释放自定义类的泛型列表的内存。

只在
列表中存储您需要的内容
我认为,从列表中删除未使用的项就足够了。因此,该名单没有增加到300000条记录。
如果没有对对象设置引用(ReferenceCounter==0),gc将收集它,。。。将来……
因此,我认为你的主要问题应该是,你想对30多万条参赛作品做些什么?是否有必要将它们全部保存起来?
如果是:也许代理或Flyweight模式可以轻松解决您的问题。由于重载对象的懒散性,您可以保存小对象列表,它只通过显式调用加载其重载内容。
现在更好了,使用Flyweight模式,您还可以存储一些基本信息(例如元数据),例如图像、大小,而无需加载完整的负重图像。
因此,如果无法减少Listentry计数,只需减少对象的MemoryFootprint即可。


p、 美国:飞锤也可能在规定的时间后忘记它们的重物,在规定的睡眠时间后收缩。

清除列表并运行
GC.Collect()两次

如果我没记错的话,GC第一次传递未引用的项时会将其标记为垃圾收集,第二次传递时会将其从内存中删除。 (如果我错了,请告诉我。)


仍然不能保证内存会被清除,但它会尽可能接近您所能获得的内存。

您存储的是什么类型的数据?图像?一般来说,你什么都不用做。但有时你可以/必须提供帮助,这取决于所有不在问题中的细节。还有,“3lac”是多少?@Henkholtman可能是(多亏了Ingenu),这意味着“很多”,我刚刚意识到他把300000张唱片放在了这个列表中。