什么是Java中的进程\收割机线程?

什么是Java中的进程\收割机线程?,java,multithreading,Java,Multithreading,随着时间的推移,我在应用程序中积累了数百个这样的进程收割机线程。有人知道这是什么吗?它们似乎是在我使用Runtime.exec()时出现的,但是我在finally语句中破坏了我的进程,但它们仍然出现 屏幕截图: 我自己也没见过这个,所以我搜索了一下;似乎进程收割机与Linux内核进程管理相关,是一个守护进程线程。它维护流程状态,以便在流程终止时释放/释放/收集资源,等等。资源可能会帮助你。最后一部分提到了收割机。您必须在exec之后和destory之前调用process.waitFor()。感

随着时间的推移,我在应用程序中积累了数百个这样的进程收割机线程。有人知道这是什么吗?它们似乎是在我使用Runtime.exec()时出现的,但是我在finally语句中破坏了我的进程,但它们仍然出现

屏幕截图:


我自己也没见过这个,所以我搜索了一下;似乎进程收割机与Linux内核进程管理相关,是一个守护进程线程。它维护流程状态,以便在流程终止时释放/释放/收集资源,等等。资源可能会帮助你。最后一部分提到了收割机。

您必须在exec之后和destory之前调用process.waitFor()。

感谢您提供的链接,现在阅读,您知道如何摆脱收割机了吗?从您的屏幕截图来看,它们似乎已经被处理掉了。无论如何,它们都是必需的,因为您正在使用Runtime.exec()生成一个单独的进程。我不太确定如何摆脱它们,因为我自己也没有见过它们:-)啊!谢谢Sagar,这给了我提示,我关闭并重新启动了VisualVM,线程不见了,所以是的,它们正在被清理。谢谢:)
Process proc = null;
        String line;
        try {
            logger.info("Trying to execute command " + Arrays.asList(command).toString().replace(",", ""));
            proc = Runtime.getRuntime().exec(command);

        } catch (IOException e) {
            logger.info("IOException while trying to execute " + command);
            return false;
        } finally {
            if(proc != null) {
                proc.destroy();
            }
    }