事先启动一个web应用程序,用jps查看其进程id,接着用各种jdk自带命令优化应用
Jmap
此命令可以用来查看内存信息,实例个数以及占用内存大小
堆信息
堆内存dump
jmap‐dump:format=b,file=eureka.hprof14660
Jstack
用jstack加进程id查找死锁,见如下示例
远程连接jvisualvm
启动普通的jar程序JMX端口配置:
jstack找出占用cpu最高的线程堆栈信息
1,使用命令top -p <pid> ,显示你的java进程的内存情况,pid是你的java进程号,比如19663
2,按H,获取每个线程的内存情况
3,找到内存和cpu占用最高的线程tid,比如19664
4,转为十六进制得到 0x4cd0,此为线程id的十六进制表示
5,执行 jstack 19663|grep -A 10 4cd0,得到线程堆栈信息中 4cd0 这个线程所在行的后面10行,从堆栈中可以发现导致cpu飙高的调 用方法
6,查看对应的堆栈信息找出可能存在问题的代码
Jinfo
查看正在运行的Java应用程序的扩展参数 查看jvm的参数
Jstat
jstat命令可以查看堆内存各部分的使用量,以及加载类的数量。命令的格式如下: jstat [-命令选项] [vmid] [间隔时间(毫秒)] [查询次数] 注意:使用的jdk版本是jdk8
垃圾回收统计
jstat -gc pid 最常用,可以评估程序内存使用及GC压力整体情况