1,内存高
    思路:jmap -heap 27403,查看进程堆概要信息
    (1)把内存镜像导出,使用命令,如 jmap -dump:format=b,file=<导出目录+文件名> <进程号> ,如 jmap -dump:format=b,file=27403.dump 27403
    (2)使用内存分析工具,下载地址,http://www.eclipse.org/mat/ 
    (3)具体分析方法,如下:
        打开软件后,File-->Open Heap Dump...,打开刚才导出的镜像文件,选择Leak Suspects Report,Finish,进入分析页面
        Histogram:列表展示出内存中的对象数目和占用内存大小
        Dominator Tree:列表展示出程序中每个线程中的对象数目和占用内存大小
        Top Consumers:图表展示出每个线程的对象数目和占用内存大小
        Top Components:图表展示出内存中的对象数目和占用内存大小
        Leak Suspects:这个是最常用的,会自动检测分析内存异常的原因
        右键对象-->show objects by class可以查看对象的具体情况
        by incomming reference:显示引用该对象/线程的其他对象
        by outgoing reference:显示当前对象/线程引用的其他对象
        点击Leak Suspects,程序会分析出可能存在内存问题的地方,继续点击Detail可以看到具体有哪些对象和线程,接下来就要根据具体情况具体分析了
        
2,CPU高
    思路:
    (1)查看进程对应的线程情况,命令如 top -H -p PID ,找到问题线程,记录线程号;
    (2)使用科学计算器,将十进制的线程号转成十六进制,比如493620-->78834;
    (3)拿到了可能出问题的进程号和线程号,接下来使用jvm内置的命令来导出Java的堆栈信息,命令如 jstack -l <进程号> > <导出目录+文件名> ;
    (4)打开导出的堆栈信息,并全文搜索刚刚拿到的十六进制的线程号,就可以找到出问题的代码具体位置了;
    
3,GC情况查看
    (1)命令说明
        命令格式:jstat [Options] vmid [interval] [count], 如 jstat -gc 30996 3000 或使用命令:jstat -gcutil 30996 3000
        即:每3秒一次显示进程号为30996的java进程的GC情况;
    (2)结果说明
         S0C:年轻代中第一个survivor(幸存区)的容量 (字节) 
         S1C:年轻代中第二个survivor(幸存区)的容量 (字节) 
         S0U:年轻代中第一个survivor(幸存区)目前已使用空间 (字节) 
         S1U:年轻代中第二个survivor(幸存区)目前已使用空间 (字节) 
         EC:年轻代中Eden(伊甸园)的容量 (字节) 
         EU:年轻代中Eden(伊甸园)目前已使用空间 (字节) 
         OC:Old代的容量 (字节) 
         OU:Old代目前已使用空间 (字节) 
         PC:Perm(持久代)的容量 (字节) 
         PU:Perm(持久代)目前已使用空间 (字节) 
         YGC:从应用程序启动到采样时年轻代中gc次数 
         YGCT:从应用程序启动到采样时年轻代中gc所用时间(s) 
         FGC:从应用程序启动到采样时old代(全gc)gc次数 
         FGCT:从应用程序启动到采样时old代(全gc)gc所用时间(s) 
         GCT:从应用程序启动到采样时gc用的总时间(s) 
         NGCMN:年轻代(young)中初始化(最小)的大小 (字节) 
         NGCMX:年轻代(young)的最大容量 (字节) 
         NGC:年轻代(young)中当前的容量 (字节) 
         OGCMN:old代中初始化(最小)的大小 (字节) 
         OGCMX:old代的最大容量 (字节) 
         OGC:old代当前新生成的容量 (字节) 
         PGCMN:perm代中初始化(最小)的大小 (字节) 
         PGCMX:perm代的最大容量 (字节)   
         PGC:perm代当前新生成的容量 (字节) 
         S0:年轻代中第一个survivor(幸存区)已使用的占当前容量百分比 
         S1:年轻代中第二个survivor(幸存区)已使用的占当前容量百分比 
         E:年轻代中Eden(伊甸园)已使用的占当前容量百分比 
         O:old代已使用的占当前容量百分比 
         P:perm代已使用的占当前容量百分比 
         S0CMX:年轻代中第一个survivor(幸存区)的最大容量 (字节) 
         S1CMX :年轻代中第二个survivor(幸存区)的最大容量 (字节) 
         ECMX:年轻代中Eden(伊甸园)的最大容量 (字节) 
         DSS:当前需要survivor(幸存区)的容量 (字节)(Eden区已满) 
         TT: 持有次数限制 
         MTT : 最大持有次数限制