6.2.5 GC打开文件极慢且极耗内存 生产服务器因为oom一天宕机多次 无法接受
本帖最后由 Lynn.Dou 于 2024-3-7 14:40 编辑调研编号:DOCXLS-9963
GC打开文件极慢且极耗内存
麻烦看下什么原因导致
您好,
下图为我测试的导入时间,供参考。同时查看原始文件注意到有几个sheet公式较多,初步猜测可能与此有关。
需要进一步调研是否有优化的空间,待有进展贴中通知您。 Lynn.Dou 发表于 2024-3-5 14:39
您好,
下图为我测试的导入时间,供参考。同时查看原始文件注意到有几个sheet公式较多,初步猜测可能与此 ...
除了打开时间之外,内存也占用相当大 信息收到,一并调研中 更新进展:
经调研原因是原xlsx文件中 ”500万以下一次性抵扣“sheet有两个引用区域很大的条件格式,具体如下图所示:
这是造成GcExcel加载xlsx文件慢和内存占用大的主要原因。由于范围较大,GcExcel 和 MS Excel 计算都非常耗时,您可以尝试将此xlsx文件在MS Excel 本地打开,在切换至此sheet时,也会出现卡住等性能问题。
所以,建议您缩小原xlsx文件条件格式的引用区域,以避免出现此类问题。 Lynn.Dou 发表于 2024-3-7 17:51
更新进展:
经调研原因是原xlsx文件中 ”500万以下一次性抵扣“sheet有两个引用区域很大的条件格式,具体 ...
业务人员上传的文件,我们无法确定,你们能否提供一个预检文件的方法,能提示文件是否存在一些不合理的地方 这边调研一下,后续有进展在帖中再与您跟进。 感谢您的建议,目前已作为需求记录至产品需求库,如果后续有相关计划会在贴中通知您。
本贴先移至需求版本。(DOCXLS-9990) Lynn.Dou 发表于 2024-3-11 09:20
感谢您的建议,目前已作为需求记录至产品需求库,如果后续有相关计划会在贴中通知您。
本贴先移至需求版本 ...
最好能配置下参数 比如单文件GC最大使用内存多少 到了临界值后就切断了
还有单文件的加载 或者 计算 超过多少时间就不要执行了 极有可能开销过度 您好,因为产品层在设计上不会监控内存,所以您提到的这个建议目前还不在计划内,如果后期有相关计划了,会在贴中反馈。
基于咱们贴中问题我们做了进一步的调研,原始文件中部分行高列宽信息丢失,所以在导入的时候执行了autofit进而触发了重算,导致文件加载慢。
针对open慢的问题,可以参考以下workaround方案:
// write test code
Workbook workbook = new Workbook();
long startTime = System.currentTimeMillis();
XlsxOpenOptions openOptions = new XlsxOpenOptions();
// unable the autofit.
openOptions.setDoNotAutoFitAfterOpened(true);
workbook.open("6801-0001-0001-所得税费用明细表_1.xlsx", openOptions);
long endTime = System.currentTimeMillis();
long elapsedTime = endTime - startTime;
System.out.println("打开文件花费了" + elapsedTime + " 毫秒");
不过打开后如果做了其他操作仍可能会出现性能问题,(原因如上所述,条件格式本身引用范围过大),所以综合来看,建议从条件格式入手缩小引用范围,再结合此open过程中的workaround方案,解决此问题。
页:
[1]
2