0

所以说我有这段代码,它可以将字符串流回具有数百万行数据的客户端。每次写入时的所有字符串都会被保留,从而影响 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;

        }
4

1 回答 1

2

除非您调用它们,否则不会String在运行时实习。.intern() 你没有任何炸毁实习生池的危险。

如果你用 组装你的字符串可能有助于加快速度 StringBuilder,但它不会对整体内存消耗产生任何影响。你正在制作的每一个字符串在你完成写入到它的目的地后就会消失BufferedWriter并被遗忘。OutputStreamWriter

于 2018-08-16T07:41:08.203 回答