【发布时间】:2012-03-08 00:31:45
【问题描述】:
“新”有多贵?我的意思是,我应该以重用同一个对象为目标,还是如果该对象“超出范围”与清空它一样?
例如,一个方法创建一个列表:
List<Integer> list = new ArrayList<Integer>();
在方法的末尾,列表不再使用——这是否意味着不再为其分配内存,或者是否意味着有一个空指针指向它(因为它是“创建的”)。
或者,我可以向方法发送一个“列表”,并在方法结束时将其清空:list.removeAll(list); 从内存的角度来看,这有什么不同吗?
谢谢!
【问题讨论】:
-
我认为编写清晰易读的代码更有意义。你不应该担心java中的这种事情。
-
在某些时候,不再使用的对象(例如超出范围)将被 JVM 自动垃圾收集。如果您愿意,您可以清理列表,但 JVM 会在某个时候为您处理它们。
-
如果你有足够的时间来清除列表,那么你可以做到。否则是一个很大的问题。
标签: java list memory-management new-operator memory-efficient