GC相关
文章平均质量分 60
GC调优、内存泄露排查等
lanicc
做过的需求没有写过的事故报告多
展开
-
FullGC频繁,线程数持续增长排查
后来经过排查,是有个定时检查内存中的连接池与数据库中维护的数据源信息差异的任务,在不断的创建连接池,在某个分支条件下,创建了连接池后,发生异常,但没有及时关闭连接池,导致在后续的定时任务调度中,不断的创建连接池。初步怀疑是线程对象较多,且状态处于长时间的TIMED_WATING,所以younggc无法回收,进入老年代,引起频繁fullgc。这个应用是bi系统中的数据查询引擎,维护了很多库,约500个,但现在有6k左右的数据库连接池肯定是不对劲的。但gc日志分析来看gc暂停时间并不长,只是gc整个过程较长。原创 2022-11-22 13:55:46 · 1107 阅读 · 1 评论 -
GC暂停时间过长——排查分析
经过对gc日志的分析,发现,实际暂停时间和告警内容不符,查看监控,也发现了这个问题。和运维确认后,监控和告警的指标,并不是gc暂停时间,而是gc总时长。因此,运维侧,需要优化,告警、监控相关说明。监控最好能够添加暂停时长的指标 @运维同鞋。STW的两个阶段,共耗时 0.19s。老年代够用,但新生代小了。原创 2022-11-21 11:33:01 · 1028 阅读 · 0 评论 -
GC暂停时间过长——未关闭Swap
发现,class unloading耗时较久为3.412s!查资料,发现类卸载阶段产生了很多的页活动,导致把cpu时间从GC线程抢走,内存页交换没有单独的监控,只能从实例io监控看了。内存页交换机制在生产环境一般是禁用的,因此优化手段是。GC过程中,长暂停主要是在【重新标记】阶段,日志为。从上面可以看到,发生GC时,实例io确实有突增。原创 2022-11-17 16:08:46 · 760 阅读 · 0 评论 -
常用的故障分析工具
线上故障排查工具原创 2022-11-22 14:06:41 · 655 阅读 · 0 评论 -
mat内存不够OutOfMemoryError
使用mat分析堆栈dump时,出现错误java.lang.OutOfMemoryError: Java heap space。修改/Applications/mat.app/Contents/Eclipse/MemoryAnalyzer.ini。中的-Xmx1024m即可。原创 2022-11-24 16:52:44 · 641 阅读 · 0 评论