Estou tentando executar um relatorio de cupons fiscal na minha aplicação, tenho uma classe CupomFiscal que possui uma lista de CupomFiscalItem, passo uma lista de CupomFiscal para o relatorio
JRBeanCollectionDataSource jr = new JRBeanCollectionDataSource(lista);
Map param = parametros;
param.put(JRJpaQueryExecuterFactory.PARAMETER_JPA_ENTITY_MANAGER, PersistenceFactory.EM);
InputStream is = getClass().getResourceAsStream("/relatorio/template/" + relatorio + ".jasper");
JasperReport report = (JasperReport) JRLoader.loadObject(is);
JasperPrint print = JasperFillManager.fillReport(report, param, jr);
No momento que eu chamo o fillReport dispara a exception
Exception occurred during event dispatching:
java.lang.OutOfMemoryError: Java heap space
at java.awt.image.DataBufferInt.<init>(DataBufferInt.java:41)
at java.awt.image.Raster.createPackedRaster(Raster.java:458)
at java.awt.image.DirectColorModel.createCompatibleWritableRaster(DirectColorModel.java:1015)
a lista esta indo com 16000 objetos, todos ja foram preinicializados pelo fetch no select, entao gero um unico select para popular a lista de itens de cada cupom, aumentei a memoria para 128 megas mesmo assim disparou a exception mas chegou a abrir o relatorio com 736 paginas, bem lento mas ate abriu.
no subrelatorio eu passo a lista de cupomfiscalitem da seguinte maneiranew net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{cupomFiscalItemList})
