博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
不当使用 Runtime 类引起的 Too many open files
阅读量:6307 次
发布时间:2019-06-22

本文共 482 字,大约阅读时间需要 1 分钟。

hot3.png

      前段时间发现项目在运行一段时间之后,开始报错java.net.SocketException: Too many open files。 猜测又是哪里有打开流之后未关闭之类的情况存在,也就是有泄漏。扫了下代码,似乎没发现哪里有不当之处,有异常捕获,也有在finally里对流进行关闭。耐心调试后发现了问题所在,程序里有使用到如下方法:

 

       Runtime.getRuntime.exec(cmd)。

 

       发现在此处会打开三个流(linux上可以使用lsof -p pid | wc -l 验证,每次调用该方法,且不关闭流的话,数量增加3)。 三个流分别是inputStream,outputStream和errorStream。而程序里只对其中的两个流进行了关闭。因此,每次调用该方法,都会引起1个file的泄露。长时间运行之后,就超过设置的file上限了。

 

      泄露什么的最麻烦了。因此代码还是要谨慎处理,打开了莫忘关闭。同时还要对使用的java api有充分的了解才行啊。。

转载于:https://my.oschina.net/u/1162561/blog/399029

你可能感兴趣的文章
Django 文件下载功能
查看>>
走红日本 阿里云如何能够赢得海外荣耀
查看>>
在市场营销中使用敏捷方法:过程、团队与成功案例
查看>>
新书问答:Agile Management
查看>>
苹果将iOS应用带入macOS
查看>>
react入门
查看>>
VUE高仿饿了么app
查看>>
针对Kubernetes软件栈有状态服务设计的思考
查看>>
你的可用性达标了吗?云端业务性能高可用的深度实践
查看>>
linux yum清缓存脚本
查看>>
基于epoll封装的事件回调miniserver
查看>>
天猫高管全面解读大快消2018新零售打法
查看>>
idea springboot热部署无效问题
查看>>
第八章 进程间通信
查看>>
HttpSession接口中的方法(Jsp中的session类的用法)
查看>>
「镁客早报」AI可预测心脏病人死亡时间;机器人开始在美国送外卖
查看>>
MoQ(基于.net3.5,c#3.0的mock框架)简单介绍
查看>>
物联网全面升级,十年内推动工业进入智能化新阶段
查看>>
spring-通过ListFactory注入List
查看>>
一种基于SDR实现的被动GSM嗅探
查看>>