每当log4j2的RollingFileAppender在我的Web服务器上旋转日志文件时(当新的一天写入第一个条目时),可用磁盘空间会大大缩小。
我使用log4j-1.2.17.jar。
lsof显示已删除的文件,由于我的java进程正在使用它们,因此无法释放这些文件。
例如,文件FOP.log被旋转到FOP.log.2016-04-13.gz,这显然运作良好,但现在
[crauser@localhost logs]$ lsof | grep "/" | grep deleted
java 3204 crauser 1w REG 253,0 10486278 1054558 /home/crauser/cra.decap/decap.interface/logs/cra_decap_consumer.log.5 (deleted)
java 3204 crauser 2w REG 253,0 10486278 1054558 /home/crauser/cra.decap/decap.interface/logs/cra_decap_consumer.log.5 (deleted)
显示文件FOP.log.2016-04-13的270倍(没有gz后缀)。
这些未删除的文件占用了几GB的磁盘空间。
一旦我杀了java进程,这些文件就消失了,但是通过kill进程重新启动不是一个选项。
有没有办法防止此文件句柄泄漏?