栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Full gc频繁如何解决,遇到OOM问题如何排查

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Full gc频繁如何解决,遇到OOM问题如何排查

Full GC 触发Full gc的表现形式
  • CPU满载告警
  • API响应时间过长
  • 内存反复波动
  • fullgc告警
常用的排查命令

jps: 查看本机java进程
jstack: 打印线程的栈信息,制作线程dump文件
jmap:打印内存映射信息,制作堆dump文件
jstat:性能监控工具
jhat:内存分析工具,用于解析堆dump文件并以适合人阅读的方式展示出来
jconsole: 简易的jvm可视化工具

Full gc发生的原因
  • System.gc() 方法调用
  • 老年代空间不足,新生代对象转入以及创建为大对象、大数组时候。如果Full gc后空间仍然不足,则抛出错误: java.lang.oom。
  • 永久代/元空间满了,存放class信息,当需要加载的类,反射的类和调用方法较多时候,未采用CMS GC 情况下执行Full gc。可以采用增大永久代方法
解决方法

1.如果每次gc之后剩余空间不大,说明有一部分顽固对象一直没有办法回收,导致可用内存变少,这种情况下容易oom
2.每次gc之后,剩余空间比较大,意味大部分对象都被清理了,但是系统又频繁gc,说明老年代涌入大量对象,新生代可能设置过小

oom排查
  1. 先查看启动参数是否有问题
  2. 内存快照分析:启动时候加入参数:HeapDumpOnOutOfMemoryError
  3. 然后使用memoryAnalyzer/jvisualvm分析

原因:
创建大对象/大数组
大量查询未分页
死循环

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/855166.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号