以前解决过一个问题,绕了很大的一个弯,才了解到Linux下查看Java进程的运行堆栈的方法。虽然现在被jstack可以替代很多,呵呵
在linux下 用ps命令查看java进程的进程号,然后用kill -3 pid的方法,使得java进程向自己的标准输出(或已经被重定向),输出当前进程的堆栈、内存、线程、锁的使用情况。
如果有死锁的话,会明确打印出dead lock信息。
如果有常备线程退出的话,会明确没有该线程的堆栈。对于此方法的使用经验,非常建议给每一个生命周期和程序一样的线程都命名上友好的命名。
当时的故障,如果知道用到这个命令的话,就可以知道多个线程都会竞争同一个锁上,而当前得到锁的线程却因为udp checksum的异常,导致锁一直释放不掉。
如果知道他,会很加快速度。共享下经验吧
本文分享了在Linux环境下通过ps命令查看Java进程堆栈的方法,以及如何利用此方法快速定位并解决死锁问题的经验。强调了为程序中的每个生命周期线程命名的重要性,以提高诊断效率。
1374

被折叠的 条评论
为什么被折叠?



