月度归档:2013年5月

解决java调试工具无法连接jvm

今日对线上tomcat做jstack时发现如下异常

后来尝试不同的jdk版本发现tomcat在1.6.24版本以下的jmap,jstack都无法操作,而在1.6.18版本可以执行jmap,jstack.

原因分析

jvm运行时会生成一个目录hsperfdata_$USER($USER是启动java进程的用户),在linux中默认是/tmp,目录下会有些pid文件,存放jvm进程信息,而jmap,jstack等工具会读取/tmp/hsperfdata_$USER下的pid文件获取连接信息.
知道这个原因后,我马上检查了/tmp/hsperfdata_root目录,果然没有pid对应的文件,但在$TOMCAT_HOME目录中的temp目录中有对应的文件.
阅读全文…