ArrayList<Object> list = new ArrayList<Object>();
for (int i = 0; i < 10; i++) {
Object o = new Object();
list.add(o);
}
list = null;或
ArrayList<Object> list = new ArrayList<Object>();
for (int i = 0; i < 10; i++) {
Object o = new Object();
list.add(o);
o = null;
}在java中,哪个代码块会导致内存泄漏?为什么?
如果两者都不会导致内存泄漏,我如何才能导致内存泄漏~(我想要一些代码)
发布于 2011-10-18 11:34:52
我不认为上面给出的代码中有任何内存泄漏。即使您将s设置为null,"string“对象仍然由ArrayList项引用。因此,在循环结束后,这些string对象仍然具有活动引用。
在Java中,通过静态对象引用仍然可能出现内存泄漏。请参考link。
发布于 2011-10-18 11:33:39
这两种情况都不会导致内存泄漏,所有对象都会在代码块结束时自动释放。
发布于 2011-10-18 11:56:28
这两个示例都没有内存泄漏。在Java中,仅仅为了帮助垃圾收集器而将变量显式设置为null是不值得的。
请注意,在某些情况下,需要将对大型对象(比如在缓存中)的长期引用设置为null,以避免无约束的内存增长(泄漏)。
https://stackoverflow.com/questions/7802068
复制相似问题