Java Log4j日志旋转会泄漏已删除文件中的磁盘空间

Java Log4j日志旋转会泄漏已删除文件中的磁盘空间,java,logging,memory-leaks,diskspace,rollingfileappender,Java,Logging,Memory Leaks,Diskspace,Rollingfileappender,每当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

每当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进程,这些文件就会消失,但通过杀死进程重新启动不是一个选项


有没有办法防止此文件句柄泄漏?

请参阅的此可能的副本,这并没有解决我的问题,因为它与在控制台和文件中写入的两个appender有关。在我的例子中,这是原木滚动的问题。最后一个日志文件将被删除,但进程没有释放空间,并且它在几GB内不断增长。@user2075355只是好奇,你能想出如何解决这个问题吗?我面临着一个类似的问题,现在我时不时地重新启动Java进程,但我认为应该有更好的方法来解决这个问题