【发布时间】:2020-06-25 19:44:13
【问题描述】:
我的程序正在通过他们的Java SDK 在 min.io 服务器上获取一些图像。
问题是即使在inputStream.close() 之后,Java 代码中的连接仍然保持打开状态。我可以通过lsof -p <PID> 看到它。
一段时间后,它消失了,但有时它不会消失,我猜速度足够快,并且 java 服务器会抛出一些 too many open files 错误。
有没有像垃圾收集器一样从操作系统中删除连接?
如何防止这些too many open files 错误?
以防万一,代码如下:
public static byte[] getImageByImageBinaryId(String imagId) throws IOException {
InputStream object = null;
try {
object = getMinioClientClient().getObject(ServerProperties.MINIO_BUCKET_NAME, imagId);
return IOUtils.toByteArray(object);
} catch (Exception e) {
log.error(e);
} finally {
IOUtils.closeQuietly(object);
}
return null;
}
【问题讨论】: