最近又掉坑里了...
最近掉什么坑了?
掉进了 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天才搞明白。
后面有机会单独写一个自己的解决办法。

浙公网安备 33010602011771号