Optimización del rendimiento de los informes de memoria intensiva
Durante la generación del informe, JasperReports compila un fichero de definición de diseño de informe (JRXML) en un fichero .jasper y, a continuación, rellena los datos en el fichero .jasper. La salida del proceso de relleno de informes es un documento en forma de objeto JasperPrint. Todas las instancias de este objeto se pueden ver, imprimir o exportar a formatos como HTML, PDF, CSV y XLSX.
Se requiere un virtualizador durante la creación del objeto JasperPrint. Cuando se trabaja con un conjunto de datos de gran tamaño, es probable que el tamaño del objeto aumente, lo que provoca un mayor consumo de memoria. Para evitar que se desencadene una excepción de Windchill de memoria insuficiente, se necesita un virtualizador. El virtualizador divide el objeto JasperPrint en varios ficheros y guarda y comprime estos ficheros en el disco duro.
Windchill soporta los siguientes virtualizadores:
• JRFileVirtualizer: crea ficheros temporales en el disco. Genera un fichero temporal por página virtualizada.
• JRSwapFileVirtualizer: crea un fichero de intercambio único en el que se almacenan todas las páginas virtualizadas. El tamaño del fichero se puede ampliar si es necesario.
• JRGzipVirtualizer: virtualizador por defecto. No crea ficheros para almacenar páginas virtualizadas. Optimiza el consumo de memoria mediante la compresión del objeto JasperPrint mediante el algoritmo Gzip.
La configuración del virtualizador se activa a través de las siguientes propiedades. Las propiedades se configuran en el fichero jasper-integration.properties.xconf ubicado en WT_HOME/codebase.
• com.ptc.wbr.jasper.virtualizer.enabled: permite activar el soporte del virtualizador de Jasper para Windchill. El valor por defecto es verdadero.
• com.ptc.wbr.jasper.virtualizer: permite especificar el virtualizador por defecto que se debe utilizar. El valor por defecto es JRGZIPVIRTUALIZER.
• com.ptc.wbr.jasper.virtualizer.cachedsize: permite especificar el número de páginas de un objeto JasperPrint que se almacenarán en memoria. El valor por defecto es 300.
• com.ptc.wbr.jasper.jrswapvirtualizer.blocksize: permite especificar el número de bloques que debe asignar un fichero de intercambio. El valor por defecto es 4096.
• com.ptc.wbr.jasper.jrswapvirtualizer.mingrowcount: permite especificar el número mínimo de bloques en los que el fichero de intercambio puede crecer al completarse. El valor por defecto es 200.
• com.ptc.wbr.jasper.virtualizer.templocation: permite especificar la ubicación temporal donde se pueden conservar los ficheros virtualizados temporales. El valor por defecto es {WT.TEMP}.
|
PTC recomienda no cambiar los valores por defecto.
|