看过了JVM的内存模型,自己总结一下JVM的优化过程。
1.首先要分析情况,关注三大块的情况:CPU 内存和IO(磁盘+网络)。
jstack查看线程CPU的使用情况,内存使用jmap来查看内存使用情况,iostat来查看磁盘读写情况(IOTOP也可以,但需要安装)。
然后使用jinfo来打印下虚拟机的参数配置。
2.具体问题分析
CASE 1 如果是CPU高使用率的问题的话
1. 用命令 “ps -ef | grep APP” 找出应用的进程 id,比如 id为27427。
2. 找出耗CPU的线程,在Linux系统下用命令: “ top –H –p pid ”
, pid 就是前面找出来的应用进程 ID即27427 。这个命令会显示出当前占用CPU高的线程。
3.dump 出进程的所有线程栈,用命令 “./jstack -F -m -l 84703 > 84703.stack”
, 84703
是 pid。
4.将服务器上的.stack文件用文本编辑器分析是哪段代码造成的问题。
CASE 2 如果是内存使用率高的问题
未完待续