Вопрос по profiling, multithreading, java – Поиск источника создания потока в приложении Java

17

Я работаю над Java-приложением, в котором есть проблема с потоками.

Пока я использую приложения с подключенным профилировщиком Netbeans, я вижу, что создано несколько потоков. Большинство из них заканчивают в некоторых.5 seconds. Я мог только найти SwingWorkers, используемые в приложении.

Более того, большинство потоков, отображаемых профилировщиком, являются обычными, а не SwingWorkers. Я подозреваю, что если эти потоки не были созданы SwingWorker косвенно, то некоторые библиотеки, используемые приложением, создают их.

Теперь я хотел бы удалить эту проблему. Но я не смог найти способ определить источник создания потока. Если вы можете предложить другой профилировщик / инструмент, с помощью которого я могу найти источник Метод) создания темы.

@ OldCurmudgeon Поскольку я только вижу потоки в результатах профилировщика, я не знаю, когда и где созданы потоки. Следовательно, я не думаю, что смогу использовать это сейчас. Однако, как только я использую профилировщики, перечисленные ниже, я могу использовать их в некоторых локализованных случаях, если это необходимо. Спасибо за ссылку Ankit
Рассматривали ли вы получение [текущего следа стека] [1] в конструкторе вашего потока? [1]: / Stackoverflow.com вопросы / 1069066 / ... OldCurmudgeon

Ваш Ответ

2   ответа
9

вы можете попробовать следующее:

Импортировать код в проект Java. Ctrl-Shift-T (открытый тип), введите «Тема». Откроется редактор двоичного кода для класса Thread. Выберите все конструкторы Thread в представлении Outline, используйте контекстное меню «Toggle Method Breakpoint». Это создает точки останова для конструкторов. Выполнить и отладить.

В качестве альтернативы

Ты можешь получить Yourkit Java-профилировщик, который также доступен для оценки. Он может отображать потоки, созданные в приложении, включая их трассировки стека (также после завершения потока). Он не показывает, где были созданы потоки, но трассировка стека потоков может дать вам некоторые подсказки об задействованных библиотеках.

Вау, это отличный ответ, он также учит, как правильно использовать Eclipse и насколько он может быть полезен. dantuch
7

JProfiler могу это сделать. Представление монитора потоков показывает трассировку стека, где был создан поток - если запись процессора была активной в это время:

Отказ от ответственности: моя компания разрабатывает JProfiler

Похожие вопросы