删除的文件仍然打开消耗巨大的磁盘空间

时间:2017-10-23 09:29:22

标签: java memory-management jvm diskspace

我正在运行java进程。但是这会消耗大量磁盘空间,从而保留一些已删除的文件。文件的位置是/ tmp(即,我不是专门创建这些文件)。这种情况可能是什么原因以及如何克服它?

1 个答案:

答案 0 :(得分:0)

例如,当进程仍在使用文件而另一个进程删除该文件时,可能会发生这种情况。该文件将显示为已删除,但只要任何进程仍在使用文件描述符,内核就不会释放空间。

要释放空间,您必须告诉程序关闭文件描述符。这完全取决于程序设计,甚至可能无法实现。例如,如果这是一个文字处理器,您可以在主菜单中选择文件 - >关闭。

如果您无法告诉"关闭文件的程序,最后的选择是终止进程。

如果你喜欢玩游戏,你也可以使用gdb这样的调试器附加进程,找到描述符并手动关闭它。请注意,这可能会导致程序崩溃或意外行为。

在文件突然关闭的所有情况下,其内容都可能已损坏。

我不认为这可能发生在Windows上,因为Windows使用不同的锁定语义,如果文件打开则不允许删除文件。