XSSFWorkbook导致CPU占用很高

博客探讨了在处理大量数据时,XSSFWorkbook可能导致的CPU占用过高和内存溢出问题。介绍了HSSFWorkbook和XSSFWorkbook的区别,以及为了解决XSSFWorkbook的问题,引入了SXSSFWorkbook作为解决方案。SXSSFWorkbook通过设置内存中存储的数据量,定期将数据写入文件,从而防止OOM和高CPU占用。
摘要由CSDN通过智能技术生成

将微信支付的账单同步至云存储

业务需求

https://pay.weixin.qq.com/wiki/doc/api/wxpay_v2/papay/chapter5_11.shtml
将微信服务商支付的账单,同步到云存储中去

废话不多说
CPU炸了

科普

  1. HSSFWorkbook(excel 2003)
    HSSFWorkbook 针对是 EXCEL2003 版本,扩展名为 .xls;所以 此种的局限就是导出的行数,至多为 65535 行,因为行数不够多所以一般不会发生OOM。

  2. XSSFWorkbook (excel 2007)
    这种形式的出现 是由于 第一种HSSFWorkbook 的局限性而产生的,因为其所导出的行数比较少,所以 XSSFWookbook应运而生 其 对应的是EXCEL2007+(1048576行,16384列)扩展名 .xlsx,最多可以 导出 104 万行,不过,这样就伴随着一个问题—OOM 内存溢出,原因是 你所 创建的 book sheet row cell 等 此时是存在 内存的 并没有 持久化,那么随着数据量增大内存的需求量也就增大,那么很大可能就是要 OOM了或者CPU飙升的情况,进一步导致脚本机挂掉。

  3. SXSSFWorkbook(excel 2007后,poi使用3.8+版本)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
XSSFWorkbook是Apache POI库中的一个类,用于创建和操作Excel文件(.xlsx格式)。它是基于XML的Excel文件格式,提供了一组Java API来读取、写入和修改Excel文档。 使用XSSFWorkbook,你可以创建新的工作簿、工作表,设置单元格的值、格式、样式等。它还提供了各种方法来处理Excel文件,如读取和写入数据、合并单元格、设置超链接、创建图表等。 要使用XSSFWorkbook,你需要先导入Apache POI库,并在代码中创建一个XSSFWorkbook对象来表示一个Excel文件。然后,你可以使用该对象来访问工作表和单元格,并执行所需的操作。 下面是一个简单的示例代码,演示如何使用XSSFWorkbook创建一个Excel文件并写入数据: ```java import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.apache.poi.ss.usermodel.*; public class ExcelWriter { public static void main(String[] args) { try { // 创建新的工作簿 Workbook workbook = new XSSFWorkbook(); // 创建新的工作表 Sheet sheet = workbook.createSheet("Sheet1"); // 创建行和单元格,并设置值 Row row = sheet.createRow(0); Cell cell = row.createCell(0); cell.setCellValue("Hello, Excel!"); // 保存Excel文件 FileOutputStream fileOut = new FileOutputStream("example.xlsx"); workbook.write(fileOut); fileOut.close(); System.out.println("Excel文件已成功创建!"); } catch (Exception e) { e.printStackTrace(); } } } ``` 请注意,这只是一个简单的示例,你可以根据需要进行更复杂的操作,如读取数据、设置样式等。希望这能帮助到你!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值