什么更有效?清空一个对象或创建一个新对象?

adh*_*dhg 11 java memory-management list new-operator memory-efficient

"新"有多贵?我的意思是,如果我的目标是重复使用同一个对象,或者如果对象是"超出范围",那么它与清空它是一样的吗?

例如,假设一个方法创建一个列表:

List<Integer> list = new ArrayList<Integer>(); 
Run Code Online (Sandbox Code Playgroud)

在方法结束时,列表不再使用 - 它是否意味着没有分配给它的内存,或者它是否意味着有一个指向它的空指针(因为它是'创建').

或者,我可以向方法发送一个'list'并在方法结束时将其清空:list.removeAll(list);将从内存的角度来看有什么不同吗?

谢谢!

Kev*_*vin 16

它是一个数组列表,因此创建一个新对象意味着分配一块内存并将其归零,以及任何簿记开销.清除列表意味着清零存储器.此视图将使您相信清除现有对象更快.但是,JVM可能会进行优化以快速进行内存分配,因此这些都不重要.所以只需编写清晰易读的代码,不要担心.这毕竟是java,而不是c.