系统命令
ps -ef | grep java 查看java相关进程
lsof -i tcp:8080 列出当前系统TCP端口8080的应用PID
JVM命令
jcmd
jcmd -help
用法
jcmd <pid | main class> <command ...|PerfCounter.print|-f file>
示例
[Jcmd命令详解](https://docs.oracle.com/javase/8/docs/technotes/tools/windows/jcmd.html "Jcmd命令详解")
jps
主要用来输出JVM中运行的进程状态信息
用法
jps [-q] [-mlvV] [<hostid>]
示例
jps
jstat
命令可以用于持续观察虚拟机内存中各个分区的使用率以及GC的统计数据
用法
jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]
示例
jmap
可以用来查看堆内存的使用详情,1.8后建议使用jcmd,减少性能损耗
用法
jmap -help
示例
jmap -heap 65356 查看指定PID 堆内存情况
jmap -dump:live,format=b,file=/Users/zhao/Downloads/dump.prof 65356 导出Dump文件
jmap -permstat 65356 查看永久代
jstack
可以用来查看Java进程内的线程堆栈信息,1.8后建议使用jcmd,减少性能损耗
用法
jstack -help
示例
jstack -l 65356 > /Users/zhao/Downloads/jstack.txt 列举运行中线程信息
jhat
JVM Heap Analysis Tool
用法
jhat [-stack <bool>] [-refs <bool>] [-port <port>] [-baseline <file>] [-debug <int>] [-version] [-h|-help] <file>
示例
jhat /Users/zhao/Downloads/dump.prof 分析Dump文件
jdb
jdb 使用 Java Debug Interface (JDI) 启动并连接到 JVM. 源代码位于 $JAVA_HOME/demo/jpda/examples.jar.
JPDA Java Platform Debugger Architecture
jinfo
jinfo pid
打印系统,应用的配置,参数,属性信息
JVM工具
Java Mission Control
![JMC界面](https://oscimg.oschina.net/oscnet/1b861b628d77ad36b8fdb095952c4169397.jpg)
jconsole
![JConsole界面](https://oscimg.oschina.net/oscnet/6b4a40a35d87d6d31522a0c949ebabb2bbb.jpg)
jvisualvm
![Java Visual VM](https://oscimg.oschina.net/oscnet/3de9914153c7841dcbd2290d6e637ef31b5.jpg)
JVM参数
- server
- client
- Xmx 堆内存 最大值
- Xms 堆内存 初始值
- XX:PermSize 持久代 初始值
- XX:MaxPermSize 持久代 最大值
- Xmn 年轻代
- XX:NewRatio 年轻代 / 年老代
- XX:SurvivorRatio 年轻代 / 存活代
- XX:NewSize 年轻代 大小
- XX:NewMaxSize 年轻代 最大值
- XX:MaxTenuringThreshold 垃圾最大存活年龄,年龄指复制算法一次或标记等
- XX:GCTimeRatio 垃圾回收时间/程序运行时间
- XX:TargetsurvivorRatio
- Xss 线程所占堆栈大小-XX:ThreadStackSize
Control+Break Handler
Thread Dump
Detect Deadlocks
Heap Summary