简单看线程死锁

ぐ巨炮叔叔 提交于 2019-12-23 17:13:35

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

  1. 如果是本地项目可以自己模拟出死锁,直接执行jvisualvm查看

  2. 如果是线上导出

    然后本地打开看 点击线程dump

这里说的很清楚线程1等待线程2 ,线程2等待线程1。

补充:

jps

列出java进程,类似于ps命令 参数-q可以指定jps只输出进程ID ,不输出类的短名称 参数-m可以用于输出传递给Java进程(主函数)的参数 参数-l可以用于输出主函数的完整路径 参数-v可以显示传递给JVM的参数

jps 6260 Jps 7988 Main 400 jps -q 7988 7152 jps -m jps -m -l jps -m -l -v jinfo

可以用来查看正在运行的Java应用程序的扩展参数,甚至支持在运行时,修改部分参数 -flag <name>:打印指定JVM的参数值 -flag [+|-]<name>:设置指定JVM参数的布尔值 -flag <name>=<value>:设置指定JVM参数的值 显示了新生代对象晋升到老年代对象的最大年龄

jinfo -flag MaxTenuringThreshold 2972 -XX:MaxTenuringThreshold=15

显示是否打印GC详细信息

jinfo -flag PrintGCDetails 2972 -XX:-PrintGCDetails

运行时修改参数,控制是否输出GC日志

jinfo -flag PrintGCDetails 2972 -XX:-PrintGCDetails

jinfo -flag +PrintGCDetails 2972

jinfo -flag PrintGCDetails 2972 -XX:+PrintGCDetails

jmap

生成Java应用程序的堆快照和对象的统计信息

jmap -histo 6292 >/Users/heliming/image/a.log Dump堆

jmap -dump:format=b,file=/Users/heliming/image/heap.hprof 6292 jstack

打印线程dump -l 打印锁信息 -m 打印java和native的帧信息 -F 强制dump,当jstack没有响应时使用 jstack 6292 >>/Users/heliming/image/a.txt

jstack 6292

这个文件后缀可以改,方便导入jvm查看死锁问题。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!