记录一次线上 full gc 排查
背景
收到一条full gc 告警
处理
止血:单机停流(保留现场)。事后 联系运维 dump heap信息
分析定位
内存持有某对象过多



原因
伪代码:
List<Data> result = Lists.partition(listA, 1000).parallelStream()
.map(item ->
batchProcessExportAttnPlanV2(listA, xxxx其余参数))
.flatMap(Collection::stream)
.collect(Collectors.toList());
listA 数量: 约4 w
因分批错误导致 listA 对象数量: 4w * (40 000 * 1000) = 160 w
避免
- 数量限制
- 导出这类大量对象操作,评估数据量做分批操作,而不是并行封装
- 插件扫描
分析工具:ibm HeapAnalyzer
本文来自博客园,作者:执大象,转载请注明原文链接:https://www.cnblogs.com/li-junjie/articles/18711612

浙公网安备 33010602011771号