在循环内创建对象好吗?

Is it good to create an object inside a loop?

我正在尝试从数据库中获取数据并将该数据呈现在 json 对象中。为了将数据表示为 json 对象,我试图从结果集对象迭代并将结果添加到列表中。但是在 while 循环中创建一个 class 对象好吗?在我的例子中,它将创建 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);

通常最好在循环内创建对象。 Java 优化短期对象的内存使用。一个对象的内存分配时间几乎为零,收集时间为零,根本没有 运行 次要 GC 的开销。 minor collections 中的 GC 时间与存活对象的数量成正比,因此死亡的对象越多,收集速度越快。这也使它们远离老一代,这需要更长的时间来清理。所以不仅 "fine" 在循环内创建对象,而且你应该这样做,而且确实应该在循环内声明它。在您的代码示例中,emp 的范围太广。您还可以在 empList 的声明中使用空菱形运算符 <> 作为 ArrayList 的生成器(它的名称中不应包含单词 List,但是是复数形式,例如 employees).