1、JVM属性查看
- 官方地址:https://docs.oracle.com/en/java/javase/11/tools/java.html
- 命令查询:
java -XX:+PrintFlagsInitial
2、CPU占用过高
- 用
top
定位哪个进程对cpu
的占用过高 - 用
ps
命令进一步定位是哪个线程引起的cpu
占用过高:ps H -eo pid,tid,%cpu | grep 进程id
jstack
进程id
可以根据线程id
找到有问题的线程,进一步定位到问题代码的源码行号
3、堆分析
某刻堆内情况分析
1、jps
工具查看当前系统中有哪些 java
进程
2、jmap
工具查看堆内存占用情况:
jmap -heap 进程id
#查看当前时刻堆内情况jmap -histo 进程id
#查看历史生成的实例jmap -histo:live 进程id
#查看当前存活的实例,执行过程中可能会触发一次full gc
3、堆内存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诊断工具