Тысячи потоков порождены из процесса Java ... почему? - PullRequest
2 голосов
/ 08 апреля 2011

У меня проблема с недавним переходом клиента на Linux (64-битную версию) при запуске процесса Java.

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

Код недавно был изменен для реализации BlockingQueue и ExecutorService для порождения дочерних потоков, но число дочерних потоков равноконтролируется настройкой конфигурации, и я могу доказать, что этот конкретный механизм не выходит из-под контроля.Я могу только предположить, что что-то внутреннее в JVM порождает все эти потоки из-за BlockingQueue и некоторой блокировки?

Так может кто-нибудь сказать мне, как узнать, что эти потоки на самом деле и что я мог бы сделать, чтобы контролировать/ остановить их?

Ниже несколько строк списка процессов;фактический список до того, как процесс должен был быть уничтожен, имел длину более 13000 строк.

0 - 54321 447 446 1 - - - 5953085 -?00:15:50 java
0 S 54321 - - 0 82 2 - - futex_ - 00:00:00 -
1 S 54321 - - 0 82 2 - - futex_ - 00:00:00 -
1 S 54321 - - 0 82 2 - - futex_ - 00:00:00 -
1 S 54321 - - 0 82 2 - - futex_ - 00:00:00 -
1 S 54321 - - 0 822 - - futex_ - 00:00:00 -
1 S 54321 - - 0 82 2 - - futex_ - 00:00:00 -
1 S 54321 - - 0 82 2 - - futex_ - 00:00: 00 -
1 S 54321 - - 0 82 2 - - futex_ - 00:00:00 -

Любые предложения с благодарностью принимаются.

1 Ответ

0 голосов
/ 01 мая 2011

Если вы не можете загрузить приложение в отладчике IDE, вы можете загрузить приложение с VisualVM, чтобы посмотреть, что на самом деле делают потоки:

http://download.oracle.com/javase/6/docs/technotes/guides/visualvm/threads.html

Убедитесь, что вы можете убить приложение, так как оно может исчерпать ресурсы из-за большого количества потоков (то есть в linux, иметь готовую оболочку).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...