背景介绍最近在生产环境中执行数据导入任务时,发现CPU异常升高的问题。通过多次定位发现,问题出在处理大型Excel文件时。通常使用的POI在处理大数据量的Excel文件(50MB或数十万行以上)时容易导致内存溢出或CPU飙升。值得注意的是,本文讨论的是针对XLSX格式的Excel文件。在Java技术生态圈中,主流的Excel处理技术包括Apache POI、JXL、阿里巴巴EasyExcel等。由于JXL仅支持Excel2003以下版本,因此在实际应用中较为罕见。Apache POI采用DOM方式解析,将文件直接加载到内存中,因此速度较快,适用于Excel文件数量较小的场景。阿里巴巴EasyExcel采用逐行读取的解析模式,通过观察者模式通知处理(AnalyEventListener),因此适用于解析数据量较大的Excel文件。场景再现与问题定位方面,使用POI时,由于将文件的所有内容加载到内存中,读取大型Excel文件容易占用大量内存,导致发生OOM。