在項目由於日志需要對日志進行擴展,根據交易號和日期生成logger對象放入隊列中,每天會清除之前的日志對象,剛開始沒有發現問題,大約到了1個月左右,生產中報了java.net.SocketException:too many open files異常,首先整個系統中除了日志外,只有讀取配置文件的兩個本地IO操作,其他的是網絡IO,其次在早上沒有大規模並發請求,除了心跳報文外,其他無請求,綜合上述可以將問題定位在日志上。仔細想每天我只是把日志對象從Hashtable中remove了,但是被remove的Logger對象並未立刻被GC,我想在remove後,將Logger中IO資源立即釋放,求高手指點。
確定是日志文件的問題? 我Java不太熟, 但至少讀寫文件不會出SocketException應該是肯定的吧?