踩坑笔记:释放资源的重要性
今天写了一个linux后台程序,其中用到定时任务,不断扫描本地文件,按照一定的逻辑向hdfs上传。一开始设置的是延迟10s执行。
在昨天晚上部署后,程序运行正常,但是早上过来去发现夜间已经报错,读取不到放在服务器本地的配置文件,会提示too many file。
把定时任务延迟调低到10ms,重新部署,(文件还少,程序本身几乎不消耗时间),大概运行一千多遍时,就会报一样的错误。
仔细检查后发现,错误的原因是没有严格认真的释放资源,在文件的md5校验代码中,使用了未命名的new Inputstream(file),这个io资源产生后并没有得到释放,消耗了linux系统的资源,导致程序无法继续运行。
一定要严格释放资源。