Java服务的问题 突然CPU变高,观察CMSGC变得频繁

weixin_36366259 2021-08-27 22:29:13

Java服务,突然CPU变高,观察CMSGC变得频繁,top -Hp pid发现一些线程变得比较高,但不是稳定的高,不是某个线程99%那种,也不是死循环。这是咋回事,重启之后就好了。这是内存泄露?还是内存不够了?应该怎么查?

...全文
165 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
=PNZ=BeijingL 2021-08-30
  • 打赏
  • 举报
回复

一般虚拟机内存不足的时候就会GC尝试释放占用的内存频发GC会引起CPU变高, 另外当服务器内存占用满的时候空闲内存不足CPU会尝试整理内存。建议你先看看服务器内存是不是100%占满了,确认是不是占满后引起CPU工作持续走高,我曾经遇到过应用B做大量计算突然占用很大内存后引发应用A内存不足频发GC。如果内存不是100,那么说明是JVM的设置的内存不足引起了频繁GC,可以先使用JSTACK命令查看下堆栈信息, 看看是不是有线程卡死,造成线程引用对象不GC占用大量内存,也看看是不是有死循环操作引发的问题。如果也没有发现,也有可能是某个业务本身需要占用大量内存引起内存不足频繁GC, 那么调大应用的可用内存再观察一段时间

小小鱼儿小小林 版主 2021-08-28
  • 打赏
  • 举报
回复
重启之后就好了,说明执行到某段代码有死循环的问题或者消耗性能的代码

51,411

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧