代码之家  ›  专栏  ›  技术社区  ›  katiex7

通过Writer写入数百万个字符串是否会影响java字符串池的内存和性能?

  •  0
  • katiex7  · 技术社区  · 7 年前

    假设我有一段代码,它将字符串流回到一个拥有数百万行数据的客户机。每个写操作上的所有字符串都会被截取,从而影响java内存吗?如果是,为什么在我的情况下,它会或不被拘留?

    查询将返回数百万行

    try (BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(response.getOutputStream()))) {
    
                writer.write("[");
                jdbcTemplate.query(sql, new Object[]{name,  age},
    
                        rs -> {
    
                            try {
    
                                writer.write("{\"id1\":" + rs.getInt("id1") + ",");
    
                                writer.write("\"id2\":" + rs.getInt("id2") + "}");
    
                            } catch (IOException e) {
    
                                log.log(Level.ERROR, e);
    
                            }
    
                        });
    
                writer.write("]");
    
            } catch (IOException e) {
    
                throw e;
    
            }
    
    1 回复  |  直到 7 年前
        1
  •  2
  •   Kevin Anderson    7 年前

    String .intern() 在他们身上。 你不会有炸掉实习生的危险。

    如果你把绳子和 StringBuilder ,但这不会对总体内存消耗产生任何影响。你做的每一根线一旦你的 BufferedWriter OutputStreamWriter 已经写完了。