JConsole线程选项卡 - 了解信息
我正在运行JBoss 5.我发现内存不断增加,随着时间的推移。 活动线程的数量正在增加。以下堆栈跟踪是从多个线程之一的活动线程(这些线程是作为时间传递添加的线程)获取的。 我可以从堆栈跟踪中学到什么?我怎样才能更深入地了解发生了什么?JConsole线程选项卡 - 了解信息
名称:的WorkManager(2)-92 状态:等待java.u[email protected]4e2e52 总阻塞:1总等待:1
堆栈跟踪: sun.misc .Unsafe.park(Native Method) 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)
感谢, 杆
该线程长相就像它正在等待getTask()一样,即它只是在等待一些工作要做。
新的线程会随着请求进入而产生,除非有大量线程忙于实际工作,否则不应该担心。
内存使用量将随着时间的推移而增长,直到JVM决定垃圾收集其中的一部分。如果它不断增长,并且从jconsole运行GC没有任何区别,那么可能会出现内存泄漏。发现泄漏可能很困难,但您可以使用MAT以使其更容易。
您将通过从JDK1.6或JDK1.7运行JConsole来了解更多信息。 JDK1.5中的JConsole.exe是“老派”的。