zoukankan      html  css  js  c++  java
  • 定位并且处理java项目cpu过高的问题

     
    jstat -gcutil <PID> 1s 次数 查看内存堆栈
    [jimw@TEST-2 /]$ jstat -gcutil 21360 1s 3
    S0 S1 E O P YGC YGCT FGC FGCT GCT
    0.00 35.53 83.18 5.52 57.32 68307 2722.980 0 0.000 2722.980
    32.95 0.00 3.18 5.52 57.32 68308 2723.043 0 0.000 2723.043
    32.95 0.00 7.29 5.52 57.32 68308 2723.043 0 0.000 2723.043
    通俗点来解释(可能不能达到标准的说法)
    S0 S1 ,E,OP,YGC都是百分比的形式反馈
    其中S0+S1+E 就是当前内存栈 所有利用的内存收集
    O 则是旧数据的回收
     
    当FGC一直彪高并且前者数据很大的时候,那么就需要检查代码是否正常,一般导致这样的情况都是内存溢出。
    并且可以检查一下内存是否有加大。
     
    参考:
     
    之前遇到的一个坑,就是加大内存后,还是发现内存占用很大伴随着也会出现cpu过高导致程序异常的慢,因此需要用jvm的内置查询内存过大跟cpu过高的问题。
     
    1. 查找进程
    top查看进程占用资源情况
     
    2.查找线程
    使用top -H -p <pid>查看线程占用情况
     
    3.查找java的堆栈信息
    将线程id转换成十六进制
    #printf %x 15664
    #3d30
     
    然后再使用jstack查询线程的堆栈信息
    语法:jstack <pid> | grep -a 线程id(十六进制)
     
    jstack <pid> | grep -A10 3d30>>/tmp/pid.log
     
    接下来就可以找到代码所在的问题了。
     
     
  • 相关阅读:
    Pandas学习笔记,如何从DataFrame里选择一个Series
    数据结构_郝斌_数组
    数据结构_郝斌_预备知识2
    数据结构_郝斌_预备知识1
    数据结构_郝斌_目录
    数据结构_郝斌_链表
    Vocabulary Recitation 2020/04/08
    5月11号
    5月10号
    5月9号
  • 原文地址:https://www.cnblogs.com/jimw/p/9136088.html
Copyright © 2011-2022 走看看