Вкладка Тем JConsole - Понимание Информации - PullRequest
2 голосов
/ 21 октября 2009

Я использую JBoss 5. Я вижу, что память увеличивается с течением времени. Количество активных тем увеличивается. Следующая трассировка стека берется из активного потока, который является одним из многих потоков (это потоки, которые добавляются с течением времени). Что я могу узнать из стека трассировки? Как я могу пойти глубже и иметь более четкое представление о том, что происходит?

Имя: WorkManager (2) -92 Состояние: Ожидание на java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@4e2e52 Всего заблокировано: 1 Всего ожидают: 1

Трассировка стека: sun.misc.Unsafe.park (родной метод) java.util.concurrent.locks.LockSupport.park (LockSupport.java:158) java.util.concurrent.locks.AbstractQueuedSynchronizer $ ConditionObject.await (AbstractQueuedSynchronizer.java:1925) java.util.concurrent.LinkedBlockingQueue.take (LinkedBlockingQueue.java:358) java.util.concurrent.ThreadPoolExecutor.getTask (ThreadPoolExecutor.java:947) java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:907) java.lang.Thread.run (Thread.java:619)

Спасибо, Rod

Ответы [ 3 ]

1 голос
/ 21 октября 2009

Этот поток выглядит так, как будто он ожидает getTask (), т. Е. Он просто ждет какой-то работы.

Новые потоки будут появляться при поступлении запросов, вам не стоит об этом беспокоиться, если только огромное количество потоков не заняты фактической работой.

Использование памяти со временем будет расти, пока JVM не решит собирать часть мусора. Если он продолжает расти, и запуск GC из jconsole не имеет значения, возможно, у вас утечка памяти. Поиск утечек может быть трудным, но вы можете использовать MAT , чтобы упростить его.

0 голосов
/ 22 октября 2009

Я бы предложил начать с профилирования с jvisualvm . Вы получите графики по времени использования кучи, потоков, сборки мусора и т. Д.

Вы также можете получить дамп кучи с помощью jmap , а затем проанализировать с помощью jhat или mat .

0 голосов
/ 21 октября 2009

Вы узнаете больше из этого, запустив JConsole из JDK1.6 или JDK1.7. JConsole.exe в JDK1.5 является "старой школой".

...