前言
- linux Redhat 7.0
- spring boot 2.0.x
- jdk1.8
长时间运行程序后,出现java.nio.file.FileSystemException: xxx: Too many open files错误。
很显然是因为文件打开未关闭造成的。
原因
Too many open files错误,因下面的代码引起的:
Path path = Paths.get("文件夹路径,如:/path");
DirectoryStream<Path> dirStream = Files.newDirectoryStream(path , "*.xml")
for (Path processPath : dirStream ) {
// 逻辑处理
}
修复
Path path = Paths.get("文件夹路径,如:/path");
DirectoryStream<Path> dirStream = Files.newDirectoryStream(path , "*.xml")
for (Path processPath : dirStream ) {
// 逻辑处理
}
dirStream.close();
说明
- 本次直接提示了问题位置,较好处理。
- 另一种问题,可能是:在A代码段未关闭文件io产生的泄漏,在B代码段抛出了异常。这样就不好处理。
- 好的方式是:io打开之后,用完立即关闭。