我在Java中遇到这个异常:
java.io.FileNotFoundException: (Too many open files)
Run Code Online (Sandbox Code Playgroud)
我正在寻找消除这个问题的方法.
此错误显然表明JVM已分配了太多句柄,而底层操作系统不会让它拥有更多.要么是因为连接不正确/流连接而导致泄漏.
此过程不间断运行数天,最终抛出异常.在12-14天的正常运行时间后反复发生.
你怎么打这个?有没有办法在JVM中获取已分配句柄的列表或在达到一定数量时跟踪?我喜欢打印它们,看看它是如何生长的.我不能使用分析器,因为它是一个生产系统,并且难以在开发中重现它.有什么建议吗?
我正在监视空闲堆大小并在接近-Xmx中指定总数的1%时引发"警报".我也知道,如果我的线程数达到500以上,那么肯定会失控.现在,有没有办法知道我的JVM 从操作系统分配了太多的句柄,并没有给它们回复,例如套接字,打开的文件等.如果我知道这一点,我会知道在哪里看,什么时候.