假设我有一个处理数千个用户的Java应用程序。因此,对于每个用户操作,将重复执行某个代码块,并且我创建了数百万个临时对象。我这样写我的方法。
public void myMethod(ClassB a, ClassA b) {
ClassC c = null;
ClassD d = null;
try {
c = new ClassC();
d = new ClassD();
// Some code which uses a, b, c, d.
} catch (Exception e) {
} finally {
a = null;
b = null;
if (c != null) {
c = null;
}
if (d != null) {
d = null;
}
}
}
类可以是任何类型。 (原始,列表或地图)
如果可用,我会使用clear()
或reset()
函数。
这真的对GC有用吗?还是我应该让Java自己处理这个?
答案 0 :(得分:8)
你应该完全让Java自己处理这个问题。您所做的只是让您的代码更难以阅读和维护。无论如何,你要归零的所有变量都超出了方法的范围 - 而且GC知道这一点。
哦,一般来说,你不应该抓住Exception
...抓住特定的例外(如果你能真正处理它们)。