【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>
-
如果是本地项目可以自己模拟出死锁,直接执行jvisualvm查看
-
如果是线上导出
然后本地打开看 点击线程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查看死锁问题。
来源:oschina
链接:https://my.oschina.net/u/3730149/blog/3146287