Java进程 常规方法分析CPU和内存占用率很高的问题

在Java开发中,经常遇到CPU和内存占用率很高的情况,这个时候需要初步分析原因,先简单说一下经常使用的分析过程:

  1. 先说一下CPU过高 (如:java进程id为:30420)
  •     top -H -p 30420 命令得到 30420进程 占用CPU较高的线程id
  •     再使用 printf "%x"n" 134126 把线程的id  转 16进制
  •    jstack 134066| grep 20bee 命令可以得到 线程的名称

    2. 内存占用率高

  •     利用JVM提供的jmap命令,把heap导出 jmap -dump:live,format=b,file=dump05171233.hprof  134066 使用jmap的命令把heap的内容 ,全部打出来
  •     把生成的文件.hprof 下载到本地,进行分析,建议大家尽量不要在生产上面,使用上面的命令,该命令对性能有影响的,并且 会触发垃圾回收
  •   下载前先使用gzip 命令压缩 一下hprof文件
  •   使用MemoryAnalyzer.exe 工具进行分析
  •    注意修改MemoryAnalyzer.ini 的-Xmx8000m 参数,因为hprof一般会比较大

你可能感兴趣的:(性能分析)