我们在客户端的testing服务器上安装了Java应用程序服务器。 在应用程序服务器中,许multithreading以许多方式访问文件系统。 应用程序服务器作为服务启动。 经过几个小时,有时甚至一天,文件系统似乎已经变成这些线程不可用。 在查看文件系统上的文件夹/目录时,它们仍然存在,似乎具有正确的访问权限,并且似乎没有独占locking。 这可能吗? 任何build议的线索,我应该寻找? 最可能的原因?
有问题的操作系统是带有32位处理器的Windows 2003(Service Pack 2)。 文件系统是NTFS JRE是1.6
我会build议使用ProcessExplorersearch有问题的文件的句柄,并从那里拿回来的进程。
尽pipe你的应用程序在某处泄漏,但我还是会猜测。
您可能正在运行到每个进程的文件限制,也许是因为该进程没有正确处理使用的对象。 正如@jay所指出的,ProcessExplorer可以帮助公开这一点,Process Monitor(另一个好的SysInternals工具)可以跟踪对象创build和对象处理过程。 如果这是您的问题,Process Explorer应该显示更多打开的句柄。
Windows上的句柄限制非常自由,所以它可能是一个不正确处理对象的错误。