1. uptime

    3.深入jvm内核-原理、诊断与优化-6. 性能监控工具-LMLPHP

     当前时间 1:01
     系统已运行的时间 1:42
     当前在线用户 3 user
     平均负载:3.62, 3.39, 3.24,最近1分钟、5分钟、15分钟系统的负载
    
  2. top

  3. 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
    
  4. jinfo

     可以用来查看正在运行的Java应用程序的扩展参数,甚至支持在运行时,修改部分参数
     -flag <name>:打印指定JVM的参数值
     -flag [+|-]<name>:设置指定JVM参数的布尔值
     -flag <name>=<value>:设置指定JVM参数的值
    
    1. 显示了新生代对象晋升到老年代对象的最大年龄

       jinfo -flag MaxTenuringThreshold 2972
      

      -XX:MaxTenuringThreshold=15

    2. 显示是否打印GC详细信息

       jinfo -flag PrintGCDetails  2972
      

      -XX:-PrintGCDetails

    3. 运行时修改参数,控制是否输出GC日志

      jinfo -flag PrintGCDetails  2972
      

      -XX:-PrintGCDetails

       jinfo -flag +PrintGCDetails  2972
      
      jinfo -flag PrintGCDetails  2972
      

      -XX:+PrintGCDetails

  5. jmap

    生成Java应用程序的堆快照和对象的统计信息

     jmap -histo 6292 >/Users/heliming/image/a.log
    

    Dump堆

     jmap -dump:format=b,file=/Users/heliming/image/heap.hprof 6292
    
  6. jstack

     打印线程dump
     -l 打印锁信息
     -m 打印java和native的帧信息
     -F 强制dump,当jstack没有响应时使用
    

    jstack 6292 >>/Users/heliming/image/a.txt

    jstack 6292

    3.深入jvm内核-原理、诊断与优化-6. 性能监控工具-LMLPHP

    	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();
    		}
    	}
    
  7. jvisualvm jdk的bin下可视化检测工具使用:https://my.oschina.net/u/3730149/blog/write/3109370第十条

09-26 09:38