Java WatchService和文件系统轮询
Java追踪表明 此API不是为索引硬盘驱动器而设计的。Most文件系统 实现对文件更改通知具有本机支持。这个 Watch Service API在可用的情况下利用了这种支持。 但是,当文件系统不支持此机制时,监视 服务将轮询文件系统,等待事件 我的问题: 如果监视的目录不是根目录(某些子目录),并且文件系统不支持I/O事件通知,因此Java WatchService和文件系统轮询,java,performance,file,filesystems,Java,Performance,File,Filesystems,Java追踪表明 此API不是为索引硬盘驱动器而设计的。Most文件系统 实现对文件更改通知具有本机支持。这个 Watch Service API在可用的情况下利用了这种支持。 但是,当文件系统不支持此机制时,监视 服务将轮询文件系统,等待事件 我的问题: 如果监视的目录不是根目录(某些子目录),并且文件系统不支持I/O事件通知,因此WatchService实现正在轮询文件系统,那么这种轮询是会降低整个系统的速度,还是只会降低侦听应用程序的速度 或者,换句话说,考虑到需要服务执行轮询以检测更改的
WatchService
实现正在轮询文件系统,那么这种轮询是会降低整个系统的速度,还是只会降低侦听应用程序的速度
或者,换句话说,考虑到需要服务执行轮询以检测更改的文件系统,是否存在一些阈值(目录深度、文件量等),在这些阈值中,使用此技术会成为系统性能方面的一个问题(开始显著影响OS性能)
注意:我知道,监视高度变化的目录将影响应用程序响应事件和需要更多CPU的繁忙程度,而不管文件系统轮询not。我对监视系统数据文件夹(例如,用户的文档目录)更感兴趣。与常规文件系统/OS操作一样:文件系统基本上是顺序的,即文件系统上的任何操作都必须等待以前的操作完成后才能完成。基于此,在文件系统上进行任何类型的轮询都会降低速度。效果将取决于FS的使用情况,不仅取决于此过程,还取决于其他程序和系统本身。