Процесс Java не завершается - PullRequest
2 голосов
/ 09 июня 2011

У меня есть приложение Java, запущенное через Webstart.Примерно в половине случаев эта программа не умрет.Эта программа прослушивает сокет и, когда она получает определенную команду, должна закрыться.Когда он получает эту команду, он выводит то, что он обычно должен, на консоль Java (чтобы она получила команду выключения), консоль Java закрывается, все окна закрываются, но процесс Java продолжает работать.

Я попытался переключить System.exit (0) на Runtime.getRuntime (). Halt (0), но безуспешно - такая же проблема возникает (изначально я думал, что на это влиял хук отключения).

Кроме того,когда VisualVM подключен к процессу Java, он также указывает, что он теряет соединение при вызове остановки или выхода, и я не могу восстановить соединение, но процесс Java продолжает существовать.

Любые идеи о том, как я могрешить это?Я пытаюсь обернуть программу в try {} и завершить / завершить в finally {}, чтобы убедиться, что ничего не удерживает ее, попытался остановить вместо выхода и т. Д. ...

Я думал только о том, что Java может бытьсохраняя системный ресурс (дескриптор файла в сокет или что-то в этом роде) или застревая в системном вызове, чтобы система не позволяла ему завершиться - но консоль Java закрывается, что для меня кажется указанием на то, что виртуальная машина пытается завершить работу..

Любые мысли или идеи приветствуются!

...