您没有关闭所有流。在读取或写入模式下,有许多打开的文件描述符正在写入未命名的管道。最常见的情况是人们使用Runtime.getRuntime.exec()然后继续保持与流程关联的流打开。您可以使用commons IO utils库关闭它们,也可以自己关闭它们。
try
{
p = Runtime.getRuntime().exec("something");
}
finally
{
if (p != null)
{
IoUtils.closeQuietly(p.getOutputStream());
IoUtils.closeQuietly(p.getInputStream());
IoUtils.closeQuietly(p.getErrorStream());
}
}
如果这不是问题,则需要深入研究代码库,确定泄漏的流在何处并将其插入。