FlightClient.getStream 中的堆外内存泄漏

问题描述

我尝试在我的 Java 项目中使用 Arrow 和 Flight,我使用 FlightClient.getStream 从远程节点请求数据,但我发现分配器分配的内存大小随着请求而增长。

Java 版本:8

Flight&Arrow 版本:3.0.0

这是我的代码片段,我发现在root.close之后flithStream分配的内存仍然存在:

try (FlightStream flightStream = client.getStream(ticket,CallOptions.timeout(1,TimeUnit.MILLISECONDS))) {
VectorSchemaRoot root = flightStream.getRoot();
root.clear();
while (flightStream.next()) { 
    // transfer root to ArrowRecordBatch and execute 
    dispatchNext(shuffleChunk,root); root.clear(); }
    root.close();
} catch (FlightRuntimeException fe) {
    String errorMsg = "IndexReadOperator read index fail ={} "+indexChunkDesc.toString();
    LOGGER.error(errorMsg,fe);
    throw new NetworkException(errorMsg,fe);
} catch (Exception e) { 
    LOGGER.error("IndexReadOperator read index fail!",e); throw new NetworkException("IndexReadOperator getStream fail! ",e); }

这是一个错误还是我使用不当?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...