In caso di report molto grandi è buona norma utilizzare la caratteristica “VIRTUALIZER” che permette di serializzare l’output delle pagine del report su file system, evitando di occupare tutta la memoria disponibile.
Esistono vari tipi di Virualizer
– JRFileVirtualizer, che tiene in memoria solo il numeri di pagine desiderato e conserva le pagine in eccedenza in dei file. In questo caso lo svantaggio è legato all’overhead della gestione dei file. Durante il processo di elaborazione vengono prodotti molti file. Alla fine del processo questi file vengono utilizzati per produrre il file del report finale. Questo virtualizer può essere usato quando si non si hanno sorgenti di dati molto grandi.
– JRSwapFileVirtualizer, che supera lo svantaggio del JRFileVirtualizer utilizzando un unico file in cui memorizzare le pagine in eccedenza. Questo virtualizer è consigliato per sorgenti di dati molto grandi.
– JRGzipVirtualizer, è uno speciale virtualizer che invece di scrivere i dati in dei file, li comprime usando l’algoritmo gzip, riducendo l’uso di memoria.
Esempio:
JRSwapFile swapFile = null;
JRAbstractLRUVirtualizer vir = null;
if (getConfig().getVitualizerType().equalsIgnoreCase("swap")) {
swapFile = new JRSwapFile(getOutputPath(), getConfig().getVitualizerMaxBlockSize(), getConfig().getVitualizerMinGrow());
vir = new JRSwapFileVirtualizer(getConfig().getVitualizerMaxPage(), swapFile, true);
} else if (getConfig().getVitualizerType().equalsIgnoreCase("file")) {
vir = new JRFileVirtualizer(getConfig().getVitualizerMaxPage(), getOutputPath());
}
if (vir != null) {
params.put(JRParameter.REPORT_VIRTUALIZER, vir);
}
jp = JasperFillManager.fillReport(reportFilename, params, getDataSource());
Fletto i muscoli e sono nel vuoto.