【Linux】查看系统内存占用
1.查看内存情况
- free -h
解释下基本概念
Mem
内存的使用信息Swap
交换空间的使用信息total
系统总的可用物理内存大小used
已被使用的物理内存大小free
还有多少物理内存可用shared
被共享使用的物理内存大小buff/cache
被 buffer 和 cache 使用的物理内存大小available
还可以被使用的物理内存大小(即系统可用内存约等于free+shared+buff/cache)
2.top查看内存占用,shift+m按MEN占用降序
top详解请参考:https://www.cnblogs.com/zhoug2020/p/6336453.html
可以看出PID为45685的进程占用内存较多
3.查看45685进程的线程情况
- ps p 45685 -L -o pcpu,pmem,pid,tid,time,tname,cmd
PID:45685的进程产生了很多线程。
4.使用ps命令:
- ps -ef | grep java | grep -v grep
查看当前java进程列表
可以看到java进程是Tomcat的启动进程,开启多个Tomcat启动进程,并且是同一个端口。由此,可以判断,是因为关闭Tomcat服务时,java进程没有自动关闭,导致内存没有释放。
5.使用lsof命令:
- lsof | grep java |grep -v grep >> 1.log
查看当前进程的运行状态
- vi 1.log
按:输入/ESTABLISHED,找到正常运行的进程
发现307100的进程运行正常
kill掉其余的进程
- kill -9 PID
原文链接:https://www.cnblogs.com/eeexu123/p/10913389.html
最后定位到是tomcat运行的jenkins的问题,具体问题正在排查。
排查的过程中起初以为是tomcat内存优化的问题,特此找到tomcat正确的jvm内存配置方案。
原文链接: https://blog.csdn.net/acwa123/article/details/72626921
Tomcat并不建议直接在catalina.sh里配置变量,而是写在与catalina同级目录(bin目录)下的setenv.sh里。
所以如果我们想要修改jvm的内存配置,那么我们就需要修改setenv.sh文件(如果没有就新建一个setenv.sh),写入(大小根据自己情况修改):
export CATALINA_OPTS="$CATALINA_OPTS -Xms1600m"
export CATALINA_OPTS="$CATALINA_OPTS -Xmx1600m"
export CATALINA_OPTS="$CATALINA_OPTS -XX:MaxPermSize=256m"
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义