我想知道您是否认为删除引用是一个好习惯(将它们设置为null
) 到对象以帮助 Java 垃圾收集器。
例如,假设您有一个包含两个字段的类,其中一个字段非常消耗内存。如果您知道只需要它进行特定处理,则可以在之后立即将其置空以帮助 GC。
假设我确实需要这两个字段,而不仅仅是内部变量,所以heavyObject1
在方法结束时不能超出范围。
您会将此作为一般做法吗?
public class TestClass {
public static Object heavyObject1;
public static Object object2;
private static void action() {
object2 = doSomething(heavyObject1);
heavyObject1 = null; //is this good?
}
}
通常不需要。
在以下特定情况下这是一个好主意:
- 该物体很大(即大到足以让你照顾)
- 你确定对象不再需要
- 物体否则不会超出范围(例如你知道周围的物体won't被垃圾收集)
但是,如果您发现自己处于这种情况,我怀疑您无论如何都有设计味道:为什么内部对象与封闭对象具有如此不同的范围/生命周期?这让我很怀疑,因为通常当您构建具有组合的对象图时,您希望组合的对象具有相似的生命周期。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)