最近发现JXL太消耗内存了。
读入模板,输入Excel这个过程中java 的full GC执行了10几回。这个也太影响系统的性能了。
查看代码发现可能是以下代码所致:
Workbook workbook = Workbook.getWorkbook(模板文件);
WritableWorkbook writeWorkbook = Workbook.createWorkbook(输出的Excel文件, workbook);
问题在于这个地方的writeWorkbook对象是workbook 的一个拷贝。也就是说内存里面放了差不多一样内容的两个东西。
这样占据了双倍的内存,JXL处理结束后,产生了大量的垃圾,导致FULL GC频繁发生。
看了一下JXL的一些代码,没发现有像POI那样不产生重复的内容的方法。