linux环境下,程序运行时,出现了too many open files的错误。
通过名字就能看出来,是打开了太多的文件,超过了系统限制。
ulimit -a
通过这个命令可以查看当前系统设置的最大句柄数是多少
可以看到,文件打开数量,最大值是1024,如果再有新文件打开就会报上述错误。
这个问题主要是一些IO流没有关闭造成的,比如我这出现这个问题的原因就是解压时候ZipFile对象没有close()造成的。
查看具体是什么没有关闭的方法:
jps
这个命令能够查看java环境下的正在执行的线程的pid
然后
lsof -p XXX >openfiles.log
上边的XXX填写pid号,如上边jps查询出来的10240、20180等
lsof -p 10240 >1.log
lsof -p 20180 >2.log
lsof -p 26311 >3.log
lsof -p 9225 >4.log
lsof -p 10186 >5.log
lsof -p 10300 >6.log
将信息导入到这些log进行查看,就能观察出来了。