elasticsearch,Java,elasticsearch" /> elasticsearch,Java,elasticsearch" />

Java 弹性搜索资源泄漏

Java 弹性搜索资源泄漏,java,elasticsearch,Java,elasticsearch,我正在使用v1.3.2上的传输客户端 Settings settings = ImmutableSettings.settingsBuilder().put("cluster.name", "elastictest").build(); Client client = new TransportClient(settings).addTransportAddress(new InetSocketTransportAddress("1.1.1.1", 9300)); 我使用以下方法关闭该方法:

我正在使用v1.3.2上的传输客户端

Settings settings = ImmutableSettings.settingsBuilder().put("cluster.name", "elastictest").build();
Client client = new TransportClient(settings).addTransportAddress(new InetSocketTransportAddress("1.1.1.1", 9300)); 
我使用以下方法关闭该方法:

client.close();
一切似乎都很好,除了我在Eclipse中的“new TransportClient(settings)”下面收到一条黄色警告,警告如下:

Resource leak: '<unassigned Closeable value>' is never closed
资源泄漏:“”从未关闭
看起来是这样的:

因此,我的问题是,即使我在方法结束时关闭了客户端,“新TransportClient”是否仍存在泄漏?或者我应该忽略eclipse中的警告吗

根据@Lucas回复,现在看起来是这样的:

为什么不尝试使用
尝试使用资源

try(Settings settings = ImmutableSettings.settingsBuilder().put("cluster.name", "elastictest").build();
Client client = new TransportClient(settings).addTransportAddress(new InetSocketTransportAddress("1.1.1.1", 9300));) {
//your code
} catch (//your exceptions if any) {
//handle exceptions
}

当您使用完资源后,它将自动关闭资源,并应使Eclipse安静下来

我发现分离TransportClient和addTransportAddress的创建会停止警告:

Settings settings = ImmutableSettings.settingsBuilder().put("cluster.name", "elastictest").build();
TransportClient client = new TransportClient(settings);
client.addTransportAddress(new InetSocketTransportAddress("1.1.1.1", 9300));

祝你好运

谢谢@Lucas,但当我在“设置”下遇到错误时,资源类型设置没有实现java.lang.AutoCloseable,而在TransportClient下实现了另一个:构造函数TransportClient(设置)未定义。。我猜second取决于First如果设置未实现自动关闭,请在
尝试之前尝试声明并初始化它
能否在上图中确认,即使仍有黄色警告,它将在捕获时自动关闭,无内存泄漏且不会中断方法?感谢您的帮助,这似乎很有效^嗨,卢卡斯,我也有同样的问题。但与您的解决方案不同,我不能将所有代码都放在try-catch中。场景是——客户端将在Springbean中初始化一次,并在其整个生命周期中由方法使用。有什么想法吗?