首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这些代码会导致java中的内存泄漏吗?

这些代码会导致java中的内存泄漏吗?
EN

Stack Overflow用户
提问于 2011-10-18 11:24:54
回答 3查看 249关注 0票数 0
代码语言:javascript
复制
    ArrayList<Object> list = new ArrayList<Object>();
    for (int i = 0; i < 10; i++) {
        Object o = new Object();
        list.add(o);
    }
    list = null;

代码语言:javascript
复制
    ArrayList<Object> list = new ArrayList<Object>();
    for (int i = 0; i < 10; i++) {
        Object o = new Object();
        list.add(o);
        o = null;
    }

在java中,哪个代码块会导致内存泄漏?为什么?

如果两者都不会导致内存泄漏,我如何才能导致内存泄漏~(我想要一些代码)

EN

回答 3

Stack Overflow用户

发布于 2011-10-18 11:34:52

我不认为上面给出的代码中有任何内存泄漏。即使您将s设置为null,"string“对象仍然由ArrayList项引用。因此,在循环结束后,这些string对象仍然具有活动引用。

在Java中,通过静态对象引用仍然可能出现内存泄漏。请参考link

票数 4
EN

Stack Overflow用户

发布于 2011-10-18 11:33:39

这两种情况都不会导致内存泄漏,所有对象都会在代码块结束时自动释放。

票数 2
EN

Stack Overflow用户

发布于 2011-10-18 11:56:28

这两个示例都没有内存泄漏。在Java中,仅仅为了帮助垃圾收集器而将变量显式设置为null是不值得的。

请注意,在某些情况下,需要将对大型对象(比如在缓存中)的长期引用设置为null,以避免无约束的内存增长(泄漏)。

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

https://stackoverflow.com/questions/7802068

复制
相关文章

相似问题

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