这种做法有多好?

Gau*_*hor 0 java garbage-collection

假设我有一个处理数千个用户的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;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

类可以是任何类型.(基元,列表或地图)如果可用,我会使用clear()reset()运行.

这对GC 真的有用吗?或者我应该让Java自己处理它?

Jon*_*eet 8

绝对应该让Java自己处理这个问题.您所做的只是让您的代码更难以阅读和维护.无论如何,你所有的变量都是在方法结束时超出范围 - 而且GC知道这一点.

哦,一般来说你不应该抓住Exception......抓住特定的异常(如果你能真正处理它们).

  • @GauravBhor:不,甚至不要清除它 - 让GC注意到没有任何东西可以引用这些条目了.我可以算一下我试图明确"帮助"我手指上的GC的次数...... (2认同)