Linux下查看Java进程的运行期间堆栈情况

时间:2022-07-30 16:01:12

  以前解决过一个问题,绕了很大的一个弯,才了解到Linux下查看Java进程的运行堆栈的方法。虽然现在被jstack可以替代很多,呵呵

  在linux下 用ps命令查看java进程的进程号,然后用kill -3 pid的方法,使得java进程向自己的标准输出(或已经被重定向),输出当前进程的堆栈、内存、线程、锁的使用情况。

  如果有死锁的话,会明确打印出dead lock信息。

  如果有常备线程退出的话,会明确没有该线程的堆栈。对于此方法的使用经验,非常建议给每一个生命周期和程序一样的线程都命名上友好的命名。

  当时的故障,如果知道用到这个命令的话,就可以知道多个线程都会竞争同一个锁上,而当前得到锁的线程却因为udp checksum的异常,导致锁一直释放不掉。

  如果知道他,会很加快速度。共享下经验吧