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
}
}
插件加载日志(可能表示某些内容):
VisualVM堆转储显示堆上的byte []分配大小(强制垃圾回收后):
不确定是否相关,但我在同一个项目上使用Spring启动。
有任何想法吗?
编辑:
似乎与压缩有关:
Aaditi:
TransportClientNodesService.addTransportAddresses的内存消耗大大增加
解决方案:https://github.com/elastic/elasticsearch/issues/26048
它不是泄漏,而是来自netty池化分配器。
将io.netty.allocator.type = unpooled设置为禁用。
System.setProperty("io.netty.allocator.type", "unpooled");
要么
-Dio.netty.allocator.type=unpooled