美文网首页
打开太多文件,导致的异样问题

打开太多文件,导致的异样问题

作者: baby_double | 来源:发表于2016-10-20 18:30 被阅读0次

    注意: 写该文章主要帮助自己记忆,贴出来希望可以给有同样问题的人解惑,不喜勿喷,可以提意见哦。

问题描述:

java.io.FileNotFoundException: /mnt/sda/sda1/STBDebugInfo11999911081020140101000141/STBPs.txt: open failed: EMFILE (Too many open files);

Caused by: libcore.io.ErrnoException: open failed: EMFILE (Too many open files);

原因:

  对于内核而言,所有打开的文件都是通过文件描述符引用。文件描述符是一个非负整数。当打开一个现有文件或创建一个新文件时,内核向进程返回一个文件描述符。

  文件描述符的变化范围是0-OPEN_MAX。不同的系统OPEN_MAX是不同的。

  早期的UNIX系统实现才有的上限值是19(允许每个进程最多打开20个文件),但是现在很多系统则将其增至63。对于FreeBSD5.2.1、Mac Os X 10.3以及Solaris 9,文件描述符的变化范围实际是没有上限的,它只收到系统配置的存储器总量,整形的字长以及系统管理员所配置的软限制和硬限制的约束。Linux2.4.22对于每个进程的文件描述符书的硬限制是1048576。

  所以当文件描述符用完后,就会报该问题。

相关文章

网友评论

      本文标题:打开太多文件,导致的异样问题

      本文链接:https://www.haomeiwen.com/subject/kjuhyttx.html