1.现象在Linux服务器执行jstack pid查看java堆栈信息时提示错误,无法连接上jvm调试工具
#环境 jdk1.8
Unable to open socket file: target process not responding or HotSpot VM not loaded
2.原因
2.1 jvm运行时会在/tmp目录下生成一个目录hsperfdata_user是启动java进程的用户),目录里面的pid文件存放着jvm进程信息,jmap,jstack等工具就是读取/tmp/hsperfdata_$USER下的pid文件获取连接信息。
2.2 tomcat里默认配置的地址并不是在/tmp,而是tomcat安装目录下的temp文件夹
3.解决办法
修改tomcat的Djava.io.tmpdir参数,统一使用/tmp目录,修改catalina.sh添加CATALINA_TMPDIR=/tmp即可.
修改地址.png
4.补充,发现这个方法会导致验证码无法显示。
网友评论