在循环中创建对象是否合适?

时间:2016-12-10 22:46:11

标签: java json object resultset

我正在尝试从db获取数据并在json对象中显示该数据。将数据表示到json对象中我试图从结果集对象进行迭代并将结果添加到列表中。但是在while循环中创建一个类对象是否合适。在我的情况下,它将创建超过100个对象。

Emp emp;
List<Emp> empList = new ArrayList<Emp>();
while(rs.next()){
    emp = new Emp();
    emp.setEMPLOYEE_ID(rs.getString("EMPLOYEE_ID"));
    emp.setFIRST_NAME(rs.getString("FIRST_NAME"));
    emp.setLAST_NAME(rs.getString("LAST_NAME"));
    empList.add(emp);
}
System.out.println(empList.size());
ObjectWriter ob = new ObjectMapper().writer().withDefaultPrettyPrinter();
json = ob.writeValueAsString(empList);

1 个答案:

答案 0 :(得分:2)

通常最好在循环内创建对象。 Java优化了短期对象的内存使用。对象的内存分配时间接近于零,并且收集时间为零,而不是运行次要GC的开销。次要集合中的GC时间与活动对象的数量成正比,因此死亡的对象越多,收集的速度就越快。这也使他们脱离了终身一代,这需要更长的时间来清理。所以它不仅很好而且很好。在循环中创建对象,但是你应该这样做,并且确实应该在循环中声明它。在您的代码示例中,emp的范围太宽。您还可以在<>的声明中使用空菱形运算符ArrayList作为empList的生成器(其名称中不应包含List,但是一个复数,如employees)。