Поиск источника создания темы в приложении Java
Я работаю над Java-приложением, которое имеет проблему с потоками.
При использовании приложений в течение некоторого времени с подключенным профилировщиком Netbeans я вижу, что несколько потоков создаются. Большинство из них заканчиваются в .5 seconds
. Я мог найти только SwingWorkers, используемые в приложении.
Кроме того, большинство потоков, отображаемых профилировщиком, являются нормальными потоками, а не SwingWorkers. Если эти потоки не были созданы SwingWorker косвенно, я подозреваю, что какая-то библиотека, которую использует приложение, создает их.
Теперь я хотел бы удалить эту проблему. Но я не мог найти способ определить источник создания потоков. Если вы можете предложить другой профайлер/инструмент, с помощью которого я могу найти источник (метод) создания потоков.
Ответы
Ответ 1
Если вы используете Eclipse и его отладчик, вы можете попробовать следующее:
- Импортировать код в проект Java.
- Ctrl-Shift-T (Open Type), введите "Thread". Вызывается редактор двоичного источника для класса Thread.
- Выберите все конструкторы потоков в представлении "Контур", используйте контекстное меню "Точка перехвата меток". Это создает точки останова для конструкторов.
- Запуск и отладка.
Альтернативно
Вы можете получить профилировщик Yourkit Java, который также доступен для оценки. Он может отображать потоки, созданные в приложении, включая трассировки стека (также после завершения потока). Он не показывает, где были созданы потоки, но трассировка стека потоков может дать вам некоторые подсказки о вовлеченных библиотеках.
Ответ 2
JProfiler может это сделать. В представлении монитора потока показана трассировка стека, где был создан поток - если в это время была активна запись ЦП:
![enter image description here]()
Отказ от ответственности: моя компания разрабатывает JProfiler