SQL执行后字符串引用驻留堆内存,疑似内存泄漏求助
诡异的内存泄漏问题排查求助
近期遇到一个十分诡异的内存泄漏问题,恳请各位帮忙排查解决。
public Mono<Boolean> insertOrders(List<ClientOrder> orders) { if (orders.isEmpty()) { return Mono.just(true); } else { var sqlBuilder = new StringBuilder().append(OrderQueries.INSERT_ORDERS_START); for (var i = 0; i < orders.size(); i++) { var order = orders.get(i); sqlBuilder.append(String.format( OrderQueries.INSERT_ORDERS_PARAMS, order.getUserId(), order.getUserName(), order.getCustomerEmail(), order.getCustomerMobile(), order.getAmount(), order.getCreateDate(), order.getStatusChangeDate(), i == orders.size() - 1 ? ';' : ',' )); } return this.databaseClient.sql(sqlBuilder.toString()).fetch().rowsUpdated() .doOnError(log::error) .map(rows -> rows == orders.size()); } }
执行heapdump后发现,SQL查询语句的字符串引用一直被保留,无法被GC回收。

内容的提问来源于stack exchange,提问作者Alexander
相关产品推荐
相关产品推荐

