【发布时间】:2011-07-28 15:01:35
【问题描述】:
重复使用一个对象时,是清空数据,还是实例化一个新对象比较好?
Object a = new Object();
for(...){
...
a = null;
**OR**
a = new Object();
}
这是我所指的示例:
Customer a = new Customer();
Collection<Customer> data = new ArrayList<Customer>();
while (rs != null && rs.next()) {
a = new Customer();
a.setCustId(rs.getLong("CUST_ID"));
a.setPerNo(period);
a.setName(rs.getString("cust_nm"));
if(a!= null)
data.add(a);
}
我想知道是否
a = new Customer();
是执行此操作的最佳方法,或者是否应该以不同的方式执行此操作以节省内存并获得最佳性能,因为每个循环都有新的客户信息要输入。据我了解,如果您创建一个新客户,您就是创建一个新对象并将 a 指向该新对象。因此,a 指向的旧对象将被垃圾收集器拾取 - 在将其设置为 null 的情况下也是如此。这是正确的理解吗?
【问题讨论】:
-
您必须为结果集的每一行创建一个新客户,否则您最终会在列表中获得相同的对象,其次数与结果集中的行数相同根据结果集中的最后一行设置其属性。也不需要空检查,
a不能为空。 -
除非在
a.setName和if(a!=null)之间发生了什么,否则if(a!= null)测试是完全多余的。它会总是通过。
标签: java performance object null new-operator