Hi, Do you mean you have an enhanced custom data source able to fetch records in multiple steps (data pagination) in order to minimize memory consumption? If you do, that's good. Maybe you could lower the number of records read in a fetch operation to see if this helps. 5000 records at a time might be too much, depending on the size of the records. If you have used a virtualizer, then the problem might not be related to JasperReports itself, but rather to the way the XLS exporting libraries work. They seem to store the generated XLS document in-memory, even we then save it into a file or send it to an output stream. So we optimized memory consumption in JasperReports by using a report virtualizer, but we cannot do the same for the exporters, because we rely on third-party libraries such as POI or JExcelAPI which do not seem to have similar mechanisms. And then a third issue. It depends on how you deliver the XLS content to the browser, assuming you are in a Web application. Some browsers need to know the length of the binary content they receive beforehand and this is why our XLS servlets output first to an in-memory byte array output stream, just to be able to measure the resulting document and only after that they output to the response output stream. Fortunately, there is a parameter available to turn this kind of buffering off and save up memory. I hope this helps. Teodor