从天真的角度来看,它看起来像声明一个局部变量(即,一个方法内的变量)为“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