我继承了一些代码:
Process p = new ProcessBuilder("/bin/chmod", "777", path).start();
p.waitFor();
基本上,将键/值对作为文件存储在磁盘上是有一些古老且高度基于巫术的原因。我真的不想进入它。
但是,我留下了一堆 IO 异常:
Exception :Cannot run program "/bin/chmod": java.io.IOException: error=24, Too many open files
Message: Cannot run program "/bin/chmod": java.io.IOException: error=24, Too many open files
一堆我的意思是在 10k - 数百万的领域
我觉得 waitFor 调用是为了阻止这些发生,等待进程完成并退出,但是我认为 chmod 在文件实际关闭之前返回结果。有谁知道这是否会导致这些异常?
我的另一个倾向是,在 java 端打开和关闭数千个文件的速度不够快,而且还有其他事情发生,可能是某种形式的文件缓冲区没有被清除fw.close() 被调用。
我对java很陌生,这是一个让我难过的怪异。(很高兴该应用程序仍然以某种方式运行..在吐出一个非常大的日志文件之后)
任何人都可以想出一种方法来解决这个问题,清除缓冲区或将文件打开限制增加到 jvm 可以跟上自己的东西(假设这是问题所在)