Запуск нескольких потоков и выполнение каждого из них exec(), а затем уничтожения() работающего Java-процесса приводит к тому, что часть процесса не уничтожается и продолжает работать после выхода из программы. Вот код, который воспроизводит проблему. Я заметил, что чем больше потоков вы запускаете, тем больше процессов остается в живых. И чем дольше сон перед уничтожением(), тем меньше процессов остается в живых. (В качестве примера я использовал InfiniteLoop. Любой запущенный процесс поможет.)
РЕДАКТИРОВАТЬ: Об ошибке было сообщено в Oracle, ждем ответа. Не стесняйтесь делиться любыми знаниями/экспериментами по этой теме.
for(int i = 0; i < 100; i++)
{
new Thread(new Runnable()
{
public void run()
{
try
{
Process p = Runtime.getRuntime().exec(new String[]{"java", "InfiniteLoop"});
Thread.sleep(1);
p.destroy();
}catch(IOException | InterruptedException e){e.printStackTrace();}
}
}).start();
}
Подробнее здесь: https://stackoverflow.com/questions/181 ... stroy-java
Запускаемые потоками процессы не уничтожают (Java) ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Почему подключение очереди PHP-FPM, когда Max Active процессы меньше, чем общие процессы
Anonymous » » в форуме Php - 0 Ответы
- 34 Просмотры
-
Последнее сообщение Anonymous
-