网站seo关键词排名推广,武威网页设计培训学校,网页设计教程博主,站长之家域名一、CPU过高分析1)使用TOP命令查看CPU、内存使用状态可以发现CPU占用主要分为两部分#xff0c;一部分为系统内核空间占用CPU百分比#xff0c;一部分为用户空间占用CPU百分比。其中CPU状态中标示id的为空闲CPU百分比。当空闲CPU百分比越低#xff0c;说明CPU占用率越高。2)…一、CPU过高分析1)使用TOP命令查看CPU、内存使用状态可以发现CPU占用主要分为两部分一部分为系统内核空间占用CPU百分比一部分为用户空间占用CPU百分比。其中CPU状态中标示id的为空闲CPU百分比。当空闲CPU百分比越低说明CPU占用率越高。2)目前针对Linux下java进程占用CPU高的分析手段主要为使用linux命令查出高CPU使用的进程前分析其是由于进程原因还是系统原因在分析出为进程消耗过高CPU后列出占用CPU高和占用时间最长的线程并使用jdk自带的jstack工具进行分析CPU使用分析。jstack命令通过top命令定位到cpu占用率较高的线程之后继续使用jstack pid命令查看当前java进程的堆栈状态参数说明-l 长列表. 打印关于锁的附加信息,例如属于java.util.concurrent 的 ownable synchronizers列表.-F 当’jstack [-l] pid’没有相应的时候强制打印栈信息-m 打印java和native c/c框架的所有栈信息.-h | -help 打印帮助信息jstack命令生成的thread dump信息包含了JVM中所有存活的线程为了分析指定线程必须找出对应线程的调用栈应该如何找在top命令中已经获取到了占用cpu资源较高的线程pid将该pid转成16进制的值在thread dump中每个线程都有一个nid找到对应的nid即可隔段时间再执行一次stack命令获取thread dump区分两份dump是否有差别在nid0x246c的线程调用栈中发现该线程一直在执行JstackCase类第33行的calculate方法得到这个信息就可以检查对应的代码是否有问题。通过thread dump分析线程状态除了上述的分析大多数情况下会基于thead dump分析当前各个线程的运行情况如是否存在死锁、是否存在一个线程长时间持有锁不放等。在dump中线程一般存在如下几种状态1、RUNNABLE线程处于执行中2、BLOCKED线程被阻塞3、WAITING线程正在等待实例1多线程竞争synchronized锁很明显线程1获取到锁处于RUNNABLE状态线程2处于BLOCK状态1、locked 0x000000076bf62208说明线程1对地址为0x000000076bf62208对象进行了加锁2、waiting to lock 0x000000076bf62208 说明线程2在等待地址为0x000000076bf62208对象上的锁3、waiting for monitor entry [0x000000001e21f000]说明线程1是通过synchronized关键字进入了监视器的临界区并处于Entry Set队列等待monitor。二、内存过高分析使用pmap查看进程内存命令格式pmap 进程id第一列。内存块起始地址第二列。占用内存大小第三列内存权限第四列。内存名称。anon表示动态分配的内存stack表示栈内存最后一行。占用内存总大小请注意此处为虚拟内存大小占用的物理内存大小能够通过top查看使用jmap查看Java进程对象使用情况命令格式jmap -histo 进程id第一列序号。第二列对象实例数量第三列对象实例占用总内存数。单位字节第四列对象实例名称最后一行总实例数量与总内存占用数使用jstat查看Java内存分布及回收情况通常运行命令如下jstat -gc 15712 5000即会每5秒一次显示进程号为15712的java进成的GC情况- S0C: Young Generation第一个survivor space的内存大小 (kB).- S1C: Young Generation第二个survivor space的内存大小 (kB).- S0U: Young Generation第一个Survivor space当前已使用的内存大小 (kB).- S1U: Young Generation第二个Survivor space当前已经使用的内存大小 (kB).- EC: Young Generation中eden space的内存大小 (kB).- EU: Young Generation中Eden space当前已使用的内存大小 (kB).- OC: Old Generation的内存大小 (kB).- OU: Old Generation当前已使用的内存大小 (kB).- MC: Permanent Generation的内存大小 (kB)- MU: Permanent Generation当前已使用的内存大小 (kB).- YGC: 从启动到采样时Young Generation GC的次数- YGCT: 从启动到采样时Young Generation GC所用的时间 (s).- FGC: 从启动到采样时Old Generation GC的次数.- FGCT: 从启动到采样时Old Generation GC所用的时间 (s).- GCT: 从启动到采样时GC所用的总时间 (s).原文https://www.cnblogs.com/wu-wu/p/11923250.html