java - 在循环内创建对象好吗?

标签 java json object resultset

我正在尝试从数据库获取数据并将该数据呈现在 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);

最佳答案

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

关于java - 在循环内创建对象好吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41081118/

相关文章:

java - 如何手动记录 JAX-RS 参数的 Swagger 数据模型?

java - JSONObject.toString() 正在创建 OutOfMemoryError

php - 使用符合要求的php显示数据库中的数据

java - 双击列标题的分隔符时不会触发 CustomResizePolicy

java - 连接 cucumber 检查java中的场景失败

java - 如何将 XML 文件转换为 json

c# - 在c#中获取任意类型数组的函数

c++ - 虚函数未解析为大多数派生类方法

PHP 对象分配与克隆

java - 使用fragment在Activity中创建新的Activity