Добрый день.
Мы готовим документ выгрузки с большим количеством данных, при вызове метода
mainTemplate.getMailMerge().execute() память и приложение зависает и после выкидывает
java.lang.OutOfMemoryError: GC overhead limit exceeded at com.aspose.words.zzZLW.zzW1(Unknown Source) at com.aspose.words.zzZLW.zzW2(Unknown Source) at com.aspose.words.zzZLR.zzW(Unknown Source) at com.aspose.words.zzZLZ.zzS(Unknown Source) at com.aspose.words.zzZLY.zzZ(Unknown Source) at com.aspose.words.zzVZ.zzZ(Unknown Source) at com.aspose.words.zzYZ6.zzZ(Unknown Source) at com.aspose.words.zzX.zzY(Unknown Source) at com.aspose.words.zzX.zzQ(Unknown Source) at com.aspose.words.zzVZ.zzZ(Unknown Source) at com.aspose.words.zzYZ6.zzZ(Unknown Source) at com.aspose.words.zzXK.zztA(Unknown Source) at com.aspose.words.zzXK.zzY(Unknown Source) at com.aspose.words.zzZ8A.zzZvi(Unknown Source) at com.aspose.words.zzZ8A.zzS(Unknown Source) at com.aspose.words.zzZ7M.zzJ(Unknown Source) at com.aspose.words.zzYX7.zzn(Unknown Source) at com.aspose.words.zz99.zzJ(Unknown Source) at com.aspose.words.zz9A.zz5g(Unknown Source) at com.aspose.words.zzZN0.zzZ(Unknown Source) at com.aspose.words.Document.updatePageLayout(Unknown Source) at com.aspose.words.zz4L.perform(Unknown Source) at com.aspose.words.zz4M.zzMb(Unknown Source) at com.aspose.words.zz1M.zzYY(Unknown Source) at com.aspose.words.zz1M.zzZ(Unknown Source) at com.aspose.words.zz1M.zzZG(Unknown Source) at com.aspose.words.Range.updateFields(Unknown Source) at com.aspose.words.Document.updateFields(Unknown Source)
Посмотрели потребление памяти:
image.png (7.6 KB)
Дебагом заметили, что огромное количество(от 3Gb до 6Gb) ошибок NumberFormatException выкидывает метод
FieldFormat#zzZ(zzWA var1,String[] var2), который почему-то пытается все значения переменной var2 прогнать через BigDecimal.
Документ имеет поля:
{ MERGEFIELD Column1 * MERGEFORMAT}
Хотелось бы узнать, почему все значения полей проходят через BigDecimal, хотя значения полей все String? Когда можно будет ждать исправления и в какой версии? Что необходимо сделать чтобы данная ситуация не воспроизводилась?
Увеличение памяти не помогает, т.к. данных огромное количество, при этом Apache POI с этим количеством справляется.
Java 8 (181)
Aspose-words 18.2