java -XX:+PrintFlagsInitial
top
定位哪个进程对cpu
的占用过高ps
命令进一步定位是哪个线程引起的cpu
占用过高:ps H -eo pid,tid,%cpu | grep 进程id
jstack
进程id
可以根据线程id
找到有问题的线程,进一步定位到问题代码的源码行号某刻堆内情况分析
1、jps
工具查看当前系统中有哪些 java
进程
2、jmap
工具查看堆内存占用情况:
jmap -heap 进程id
#查看当前时刻堆内情况jmap -histo 进程id
#查看历史生成的实例jmap -histo:live 进程id
#查看当前存活的实例,执行过程中可能会触发一次full gc3、堆内存dump
分析
jmap -dump:format=b,file=eureka.hprof 进程id
# dump一个进程的堆内存文件
-Xms10M -Xmx10M -XX:+PrintGCDetails -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=D:\jvm.dump
使用 jconsole、jvisualvm
实时连接进程观察
-Dcom.sun.management.jmxremote.port
为远程机器的JMX端口
-Djava.rmi.server.hostname
为远程机器IP
java -Dcom.sun.management.jmxremote.port=8888 -Djava.rmi.server.hostname=192.168.65.60 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -jar microservice-eureka-server.jar
5、查看进程配置
Jinfo 进程id
:查看正在运行的Java应用程序的扩展参数6、Jstat
垃圾回收统计
7、Arthas诊断工具