首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在这种情况下,我应该担心释放资源吗?

在这种情况下,我应该担心释放资源吗?
EN

Stack Overflow用户
提问于 2009-07-16 10:26:02
回答 2查看 176关注 0票数 2

假设我有一个类集合,它包含一个项目列表。

代码语言:javascript
复制
public class Collection
{
    private List<Item> MyList;
    //...
}

我有几个此Collection类的实例,它们都有不同的MyLists,但共享一些项。例如:有10个条目,Collection1引用项目1-4,Collection2有项目2-8和Collection3 4,7,8和10。

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

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

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-07-16 11:14:24

看起来有点设计问题,你真的需要全局列表吗?

除了Jon提到的弱引用之外,您还可以定期重新构建全局列表(例如在删除集合之后),或者只在需要时动态构建它,然后再次发布它。

您必须决定哪种方法最合适,这里没有足够的上下文。

票数 1
EN

Stack Overflow用户

发布于 2009-07-16 10:29:34

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

您可以考虑在全局列表中使用弱引用,如果收集了WeakReference值的引用,则可以定期修剪它们本身。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1136706

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档