Java垃圾收集中的大师提问。当我们通过以下技术进行排序时,想要了解是否存在对堆内存的性能影响
具有唯一成员变量的对象集合
ArrayList<Car>
Class Car{
boolean preferredVehicle;
}
现在我们需要将preferredVehicles排序并显示在选择列表的顶部
方法1:
方法2: Collections.sort with Comparator
在未来的垃圾收集和堆内存消耗中,是否存在可量化的性能差异以及哪一个更友好
答案 0 :(得分:0)
方法#1是O(n)
,而方法#2是O(n * log n)
。所以我会选择#1
至于GC,我没有看到真正的区别,主要是因为Car
实例是相同的。
HTH,
Yinon
答案 1 :(得分:0)
2个列表肯定会获得更多的空间并想象列表是巨大的。并且,如果你不能预先分配所需的列表容量,添加一个元素可以导致另一个列表对象分配的大小加倍,从而更多的工作对于gc。 如果您不关心原始订单,请在同一列表中应用排序。