gpt4 book ai didi

c# - 在这种情况下我应该担心释放资源吗?

转载 作者:行者123 更新时间:2023-11-30 22:49:26 24 4
gpt4 key购买 nike

假设我有一个包含项目列表的类 Collection。

public class Collection
{
private List<Item> MyList;
//...
}

我有几个这个 Collection 类的实例,它们都有不同的 MyLists 但共享一些 Items。例如:有 10 个项目,Collection1 引用项目 1-4,Collection2 在其列表中有项目 2-8 和 Collection3 4、7、8 和 10。

我的实现方式如下:我有一个全局列表,其中包含所有可用的项目。在我创建一个新的集合之前,我检查这个列表中是否已经有我需要的项目——如果没有,我创建项目并将它添加到全局列表(当然还有集合)。

我看到的问题是那些项目永远不会被释放——即使所有的集合都消失了,它们消耗的内存仍然没有被释放,因为全局列表仍然引用它们。这是我需要担心的事情吗?如果是这样,我该怎么办?我想在全局列表中添加一个计数器,以查看何时不再需要某个项目并删除其引用。

编辑:我认为这实际上是一个设计问题。我将放弃全局列表的想法,而是循环遍历所有集合,看看它们是否已经有所需的项目。

最佳答案

如果全局列表需要对项目的引用,那么您实际上无法释放它们。您真的需要引用全局列表中的项目吗?您什么时候应该逻辑上能够从全局列表中删除项目?

您可以考虑使用 weak references在全局列表中,并定期修剪 WeakReference如果他们的指称已被收集,他们自己的值(value)。

关于c# - 在这种情况下我应该担心释放资源吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1136706/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com