【性能调优】CPU&内存&Core分析
参考:https://blog.csdn.net/kimyundung/article/details/126877023 -- 待继续梳理完
MAT:
https://www.jianshu.com/p/931bd0351b78
https://www.cnblogs.com/trust-freedom/p/6744948.html#thread_overview
OQL: F5执行
Memory Analyzer allows to query the heap dump with custom SQL-like queries. OQL represents classes as tables, objects as rows, and fields as columns.
https://help.eclipse.org/latest/index.jsp?topic=%2Forg.eclipse.mat.ui.help%2Ftasks%2Frunningleaksuspectreport.html
SELECT * FROM [ INSTANCEOF ] <class name="name"> [ WHERE <filter-expression> ] </filter-expression></class>
一、CPU高分析
1.1 说明(root执行)
建议使用root账号执行命令,使用其他账号登录可能会无法看到部分进程信息。
1.2 查看服务进程ID(ps)
命令格式: ps –ef | grep XXXX
1.3 查看机器CPU占用情况(top)
命令格式: top
执行结果如下,结果会动态刷新
%CPU取值说明:以347949为例,58.7%并不是类似Windows的整体CPU占用率。CPU通常是多核,命令执行机器是8核CPU,则CPU全部可用率为8*100%=800%;
所以:相对Windows整个机器来说:CPU占用率是 58.7% / 800% = 7.35%
第一行是任务队列信息
第二、三行为进程和CPU的信息
第四、五行为内存(物理+交换)信息。
二. 进程信息
1.4 查看指定服务内部线程CPU占用情况(top)
命令格式: top -p 267396 -H
说明:
1)267396为进程PID信息,参考章节1.2获取;
2)执行结果会动态刷新
3)执行结果默认只显示下半部分信息,可以按下主键盘区域数字1,增加显示上部信息。
4)左侧PID对应内部线程ID(十进制表示)
1.5 安装JDK
通常部署环境没有JDK命令(即没有jstack,jmap等后续命令),需要找到匹配JDK并安装到环境中。
确认方法:可以先通过root切换到根目录查找jstack
命令格式:#find / -name jstack
如果找不到则需要参考章节“如何获取环境匹配的JDK”进行安装。
1.6 使用jstack命令保存堆栈信息(jstack)
命令格式: jstack 267396 > /tmp/stack1.txt
说明:
通常机器不会安装jstack信息,需使用到root账号优先查找本机jstack是否存在,否则需要自行安装。
其中nid字段对应16进制的线程ID(对应章节1.4中10进制线程信息)。
比如如下的垃圾回收线程
1.7 根据待分析TOP线程ID到jstack查找获取线程详细信息
注意: jstack中nid线程ID是十六进制;top命令结果中线程ID是十进制,查询前需要提前转换。
二、内存高
1、使用top命令查看占用高资源的java项目的进程ID(pid): top
2、查看该进程中的线程所占用资源的情况:top -Hp pid
3、查看该线程对应的16进制:printf %x 11129
打印并保存该进程中堆栈的使用信息日志:jstack -l 11095 >> jstack.log
4、查看该进程中使用高资源的线程的具体信息日志:vim jstack.log
查找上一步的16进制的线程id:/2b79
jmap -histo 线程PID
# 查看堆的使用情况,各个堆空间的占用情况
// jmap -histo PI | head 20 查看top 20的内存占用
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
2018-04-11 【Maven】
2018-04-11 【设计图绘制】