大批量 Excel解析+JVM 针对性调优

两年前做本地做的工具测试,贴子一直发布在内网今天贴到里面CSDN里面来。

当时选择了两个 excel处理工具,XLSReader 和 StreamingReader ,当时没有使用阿里的easy-excel (当时不知道这个框架,羞愧... )

主要列出了两种工具和JVM的使用情况,因为大部分excel解析工作都以 内存溢出告终,希望文章对大家有所帮助;

背景,需求导入大量 excel文件,百万级;

文件名  大小记录数列名
2019-2020充值.xlsx27M469869创建时间(yyyy/mm/dd hh:mm:ss),订单号(acquire_order_no),协议号(agreement_no),memberId,金额,状态
2019-2020交易.xlsx15M161981创建时间(yyyy/mm/dd hh:mm:ss),订单号(acquire_order_no),协议号(agreement_no),memberId,金额,状态,(订单内容)body,appName,商户,商户订单号,类型
2019-2020余额.xlsx

74M

796258memberId,金额,状态,(订单内容)body,appName,商户号,商户订单号,类型,支付金额
20201021-表3(1-6).xlsb296M1000001*6
(6百万)
订单号,memberId,金额,创建时间

XLSReader :

27M 和 15M 的文件解析正常的,所以没有关注JVM情况

使用 XLSReader 解析 2019-2020余额.xlsx时 系统无法支撑

1 jvm配置 -Xmx8000m -XX:NewRatio=3 ;old Gen 19次后,基本奔溃,如图:

 2 jvm配置 -Xmx8000m -XX:NewRatio=2        old Gen 10 次收,基本奔溃

故判断和 Eden区的大小也无关

  

StreamingReader 解析 

解析 2019-2020余额.xlsx,顺利完成解析

1 jvm配置 -Xmx8000m -XX:NewRatio=2

 2 jvm配置 -Xmx8000m -XX:NewRatio=3

 

继续大文件 20201021-表3(1-6).xlsb,顺利解析完成,下面罗列下几种情况下不同效果

1 jvm配置 -Xmx8000m -XX:NewRatio=3

 2 增加 Xms 减少 old Gen次数,-Xmx8000m -Xms5000m -XX:NewRatio=3

 

3 jvm配置 -Xmx8000m -XX:NewRatio=2,

old Gen 次数增多,但是程序还是持续执行完成了,原因在于增加了 young gen 的比例导致 old gen 空间下降

 

另附JVM 和 收集器命令,

1 堆设置
 -Xms :初始堆大小
 -Xmx :最大堆大小
 -XX:NewSize=n :设置年轻代大小
 -XX:NewRatio=n: 设置年轻代和年老代的比值。如:为3,表示年轻代与年老代比值为1:3,年轻代占整个年轻代年老代和的1/4
 -XX:SurvivorRatio=n :年轻代中Eden区与两个Survivor区的比值。注意Survivor区有两个。如:3,表示Eden:Survivor=3:2,一个Survivor区占整个年轻代的1/5
 -XX:MaxPermSize=n :设置持久代大小
2 收集器设置
 -XX:+UseSerialGC :设置串行收集器
 -XX:+UseParallelGC :设置并行收集器
 -XX:+UseParalledlOldGC :设置并行年老代收集器
 -XX:+UseConcMarkSweepGC :设置并发收集器

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值