scala - java.io.FileNotFoundException: Too many open files in system
ringa_lee
ringa_lee 2017-04-18 09:56:04
[Java讨论组]

mac 上的JVM 报错 java.io.FileNotFoundException: x-data/v_data.csv (Too many open files in system)

1 已经设置了系统的文件访问数量
$ sysctl kern.maxfiles
kern.maxfiles: 65536

2 需要同时读取 3000个csv文件

请问,是否需要对jvm作配置?

ringa_lee
ringa_lee

ringa_lee

全部回复(3)
阿神

只获取文件句柄不释放吗?

不管读取多少文件也好,完成的顺序肯定是不一样的,这当中先有一些文件被读取完成,释放文件句柄如此循环。
打个简单的比方你现在是1核的CPU那同时只有有一个线程运行。同时读取3000个文件你是有3000核的CPU吗?并且还要同时运行3000个线程么?

高洛峰
  1. http://mysun.iteye.com/blog/1... 看一下这篇文章, 确保参数大于你需要打开的文件数。不只要确保能够打开的文件句柄数足够大, 还要确保单进程能够打开的文件句柄数也足够大。

  2. 「同时」的定义太模糊,可以通过多线程的方式来打开多个文件操作, 但是线程数会收到你 cpu 核数的限制。就 3000 个文件来说, 不是很多, 通过线程池应该可以搞定。

黄舟

运行这两个命令,把结果贴上来

ulimit -a
sysctl -a

如果是mac,那么配置方式有点不一样,参考我的这篇笔记:https://segmentfault.com/n/13...

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号