我有一个场景,我使用下面的代码创建了具有 FileOutputStream 初始化的 Lock 对象。这个对象应该在整个生命周期中都存在于应用程序中。我有一个静态 Arraylist,我将在其中添加这个锁对象。此应用程序将总共有 10 个锁对象可用。
Class Lock
// instance variable
FileOutputStream fos = new FileOutputStream(file);
// acquire lock api()
try
{
FileLock lock = fos.getChannel().tryLock();
}
catch(OverlappingFileLockException ex)
{
// Happens when lock is aquired by other resures.
return false;
}
// release lock api
if(lock !=null)
lock.release
由于此对象将在 App 的整个生命周期中都存在,因此我不愿意在每次请求锁定时打开和关闭流。所以,我选择在初始化时打开一次。我想知道这种设计会产生什么影响。另外,我可以通过什么方式监控此泄漏如何影响我的应用程序和系统?我怀疑每当我们重新启动服务器时,FileDescriptors 仍然会打开。但是,我不确定它会导致什么额外开销。
注意-服务器每个周末都会重新启动
您的意见将真正帮助我重新思考并提出其他建议。提前致谢 !!