2010-02-19 35 views
3

我們正在使用JasperReports 3.7.0的虛擬器來避免內存耗盡,導致一些大的查詢。在這個主題上找到了一個helpful article,並且在JasperReports的Ultimate Guide中有對虛擬器的簡要描述,但這只是一個開始。我試圖找出哪個虛擬器是理想的,並選擇了一個,如何調整配置參數。那裏的人有什麼智慧可以提供這個話題?如何選擇和配置JasperReports虛擬器?

沃爾特·吉列

回答

4

的JRFileVirtualizer是原單,但它主要是一個概念驗證(而我正在評估JR寫;在JR開發商都固定起來,太)。它會爲每個虛擬頁面創建一個單獨的文件,這會導致擁有大量臨時文件。

我推薦使用JRSwapFileVirtualizer,因爲它只爲報告創建一個文件。

JRSwapFileVirtualizer virtualizer = null; 
try { 
    JRSwapFile swapFile = new JRSwapFile("directory", 1024, 100); 
    virtualizer = new JRSwapFileVirtualizer(50, swapFile, true); 
    params.put(JRParameter.REPORT_VIRTUALIZER, virtualizer); 
    ... 
    JasperPrinter printer = JasperFillManager.fillReport(report, params, dataSource); 
    ... 
} 
finally { 
    if (virtualizer != null) virtualizer.cleanup(); 
} 

這將使系統中刪除交換文件時,它與報告完成,它將使用虛擬器將與超過50頁的報告。

JRGzipVirtualizer是另一個p.o.c.虛擬化技術意味着沒有磁盤訪問的系統。報告頁面對象壓縮得非常好,所以如果你有一個體面的堆內存大小,你仍然可以做出一些大的報告。