Может ли Java WatcherService вызвать утечку памяти или потока? - PullRequest
0 голосов
/ 23 декабря 2018

Я использую java java.nio.file.WatchService для просмотра каталога и подозрения на утечку памяти.Может кто-нибудь подтвердить, в порядке ли приведенный ниже код или может вызвать утечку памяти / потока?Я не закрываю наблюдателя нигде.Это может быть проблемой?К вашему сведению, я использую jdk8.

 public void run() throws InterruptedException {
    while (true) {
        logger.info("Checking for file to be created in landing directory, dir: " + landingFolderStr);
        WatchKey watchKey = watcher.take();
        logger.info("Got file in landing directory, start processing");

        for (WatchEvent<?> event : watchKey.pollEvents()) {
            if (event.kind() == StandardWatchEventKinds.OVERFLOW) {
                logger.warn("Watch event might have been lost or discarded, need to investigate.");
            } else if (event.kind() == StandardWatchEventKinds.ENTRY_CREATE) {
                logger.info("Got new landing file in: " + landingFolder + ", start processing...");
                // Ingest data for thoughput and rlr
                processHandlerOutput(landingFolder, discardFolder);
            }
        }

        if (!watchKey.reset()) {
            logger.error("Exiting since file system events (WatchKey - " + watchKey + ") are no longer acessible.");
            break;
        }

}

...