查看java 进程 jps -l
实时查看和调整JVM参数
1)查看某个java进程的name属性
jinfo -flag MaxHeapSize PID
jinfo -flag UseG1GC PID
2)修改参数
只有被标记为 manageable 的flag才能被实时修改
jinfo -flag [+|-] PID
jinfo -flag = PID
3) 查看曾经被赋值过的一些参数
jinfo -flags PID
1)查看虚拟机性能统计信息
2)查看类装载信息
查看某个java 进程的类装载信息,每1000毫秒输出一次,共输出10次
jstat -class PID 1000 10
jstat -gc PID 1000 10
查看线程堆栈信息
jstack PID
生成堆转储快照
1)打印出堆内存相关信息
-XX:PrintFlagsFinal -Xms300M -Xmx300M
jmap -heap PID
2)dump 出堆内存相关信息
jmap -dump:format=b,file=heap.hprof PID
3) 设置堆内存溢出,自动dump文件
-XX:HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=heap.hprof
JConsole 是JDK自带的可视化监控工具。
命令行输入:jconsole
可以监控本地、远程java进程的CPU、类、线程
(1)在visualvm中选中“远程”,右击“添加”
(2)主机名上写服务器的ip地址,比如31.100.39.63,然后点击“确定”
(3)右击该主机“31.100.39.63”,添加“JMX”[也就是通过JMX技术具体监控远端服务器哪个Java进程]
在启动项加上以下参数:
-Dcom.sun.management.jmxremote - Djava.rmi.server.hostname=31.100.39.63 -Dcom.sun.management.jmxremote.port=8998 -Dcom.sun.management.jmxremote.ssl=false - Dcom.sun.management.jmxremote.authenticate=true - Dcom.sun.management.jmxremote.access.file=../conf/jmxremote.access - Dcom.sun.management.jmxremote.password.file=../conf/jmxremote.password"
创建2个文件
jmxremote.access
guest readonly
manager readwrite
jmxremote.password
guest guest
manager manager
授予权限 : chmod 600 jmxremot
Arthas 是 Alibaba 开源的Java诊断工具,采用命令行交互模式,
官网:https://github.com/alibaba/arthas
curl -O https://alibaba.github.io/arthas/arthas-boot.jar
java -jar arthas-boot.jar
# 然后可以选择一个Java进程
Print usage
java -jar arthas-boot.jar -h
version:查看arthas版本号
help:查看命名帮助信息
cls:清空屏幕
session:查看当前会话信息
quit:退出arthas客户端
---
dashboard:当前进程的实时数据面板
thread:当前JVM的线程堆栈信息
jvm:查看当前JVM的信息
sysprop:查看JVM的系统属性
---
sc:查看JVM已经加载的类信息
dump:dump已经加载类的byte code到特定目录
jad:反编译指定已加载类的源码
---
monitor:方法执行监控
watch:方法执行数据观测
trace:方法内部调用路径,并输出方法路径上的每个节点上耗时
stack:输出当前方法被调用的调用路径
......
java 堆分析器,用于查找内存泄露
下载地址: https://www.eclipse.org/mat/downloads.php
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps
-XX:+PrintGCDateStamps
-Xloggc:gc.log
在线
GCViewer
When I let go of what I am , I become what I might be.
走出舒适圈,遇见更好的自己。