從天真的角度來看,它看起來像聲明一個局部變量(即,一個方法內的變量)爲「final」可能導致內存泄漏。在局部變量(不是類聲明或類成員)上使用final可能導致內存泄漏?
例如,
public static MyObject create()
{
final Long time = System.millis();
return new MyObject()
{
@Override public Long getTime() {return "Time is: " + time ; }
}
}
顯然,time
字段即使create()
爲了已經returnt爲getTime()
合作,圍繞保持。
好了,現在說我有這個方法
public static int create()
{
final Long time = System.millis();
System.out.println(time);
return 2;
}
time
沒有任何內部類引用。 該方法返回後對象是否保持在附近? Y
謝謝,
必須保留*值* (如何返回對象的功能)。當你說*變量*或*字段*保持在附近時,你的意思是什麼? – aioobe 2014-10-31 14:28:37