最近又掉坑里了...

最近掉什么坑了?

掉进了 new 对象的坑。。。

为什么这么说,最近在公司用java做一个小的软件程序,目的是把word里面的表格读取出来,然后写入到excel。

本来想想挺简单的事情,引POI包,然后写逻辑,用2个word文件试了试,搞定。

但是由于需要读取的word不止2个,有30多个,且各个都是50M左右的大word,我原本设计的流程是把word表格读到内存,然后再往excel里存,本来while 循环Table Iterator就可以很好完成任务,但是偏偏还要将表头也输出出来。

我就想了一个笨办法,List存储每个doc文档的table,还是解决了少量word的读取和写入表格问题。

当我试着读取30个word时候,ide报:heap overhead。

我第一反应是new多对象了,但是实在不想重新程序,就在不改程序的情况下跟ide较劲,发现是我年轻了,还是乖乖地改程序的流程了。

起初是想改为读一个表格,写一个表格,但是后来一想,这样效率有些慢,就改为读取5个表,写出5个表,这样既保证效率,又保证heap不会溢出,GC仍会安心工作不会报错。

写出来记录一下,以后碰到嵌套循环+new+list,还是要小心一点。

对了,利用poi给word表格+表头对应读出来,这里也是坑,研究了1天才搞明白。

后面有机会单独写一个自己的解决办法。

posted @ 2021-03-02 23:07  poplarforest  阅读(95)  评论(0)    收藏  举报
1