我在我的java应用程序上运行jstack(在tomcat和ubuntu服务器版本上运行),因为它似乎在一段时间后消耗了大量内存。
所以,使用jstack我发现许多线程似乎被阻止了:
控制台日志:http://dl.dropbox.com/u/17844821/zeug/threaddumpexception.txt
Threaddump :http://dl.dropbox.com/u/17844821/zeug/threaddump.txt
所以,我知道线程被阻塞但是我怎么能找出哪个java类导致这个甚至更重要:我如何强制这些线程终止?
非常感谢任何帮助。
答案 0 :(得分:2)
由jstack产生的threaddump不正确。
我必须做两件事来获得正确的转储:
sudo -u tomcat6 jstack -J-d64 -m pid
这给了我一个看起来正确的threaddump(没有被阻塞的线程)。
答案 1 :(得分:0)
我认为这些线程正在等待一些正常的IO(套接字,记录器和其他)。
通常,当一个线程被阻塞时,jstack会显示完整的堆栈直到阻塞调用。
您可以分析堆栈并检查调用跟踪,并确定此线程是否被阻止了某些错误/问题,或者是否正常执行了服务器或应用程序。
[]的,
过去