uptime
当前时间 1:01 系统已运行的时间 1:42 当前在线用户 3 user 平均负载:3.62, 3.39, 3.24,最近1分钟、5分钟、15分钟系统的负载
top
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
public class DeadLockDemo { private static String A = "A"; private static String B = "B"; static class Test { public static void main(String[] args) throws InterruptedException { new DeadLockDemo().deadLock(); } } /** * 线程死锁 */ private void deadLock() { Thread t1 = new Thread(new Runnable() { @Override public void run() { synchronized (A) { try { Thread.currentThread().sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } synchronized (B) { System.out.println("1"); } } } }); Thread t2 = new Thread(new Runnable() { @Override public void run() { synchronized (B) { synchronized (A) { System.out.println("2"); } } } }); t1.start(); t2.start(); } }
jvisualvm jdk的bin下可视化检测工具使用:https://my.oschina.net/u/3730149/blog/write/3109370第十条