ElasticSearch Java TransportClient泄漏字节[]

时间:2017-08-03 13:54:03

标签: java elasticsearch

ElasticSearch Java TransportClient 5.5.1 似乎正在泄漏字节数组。即使我只是连接和关闭,在其间评论代码,它也会泄漏。

代码:

try (PreBuiltTransportClient preBuiltTransportClient = new PreBuiltTransportClient(settings)) {
     try(TransportClient transportClient=preBuiltTransportClient.addTransportAddress(
            new InetSocketTransportAddress(InetAddress.getByName(endPoint),javaPort))){
         //do something
     }
}

插件加载日志(可能表示某些内容):

Loaded plugins log VisualVM堆转储显示堆上的byte []已分配大小(强制执行垃圾回收后):

VisualVM

似乎与此处发布的问题相同: https://discuss.elastic.co/t/are-there-memory-leaks-in-elasticsearchs-transportclient-5-4-3-or-is-my-code-flawed/91989/5

不确定是否相关,但我在同一个项目中使用Spring启动。

有什么想法吗?

编辑:

似乎与压缩有关:

enter image description here

EDIT2:

TransportClientNodesService.addTransportAddresses

的内存消耗大大增加

1 个答案:

答案 0 :(得分:0)

这里的解决方案: https://github.com/elastic/elasticsearch/issues/26048

这不是泄漏,而是来自netty池化分配器。

将io.netty.allocator.type = unpooled设置为禁用。

System.setProperty("io.netty.allocator.type", "unpooled");

OR

-Dio.netty.allocator.type=unpooled