所以最终我需要在UNIX服务器上的磁盘上写入大量的PDF(40,000),并且我试图找到一种有效地做到这一点的方法(更快/消耗更少的内存)。
我一直在使用JasperReports创建一个模板,该模板接收报告所需的所有信息作为参数(意味着报告没有到达数据库)。
然后我有一个简单的Java应用程序,它查询数据集并带来数据集,并为每个记录填充.jasper并将PDF写入磁盘。
现在这适用于几百条记录,但我认为它不适用于生产,其中数字可扩展到40.000条记录,并且流程的输出将是相同数量的PDF文件。做一些测试我估计这个过程至少需要3个小时,而且我也开始担心内存消耗。
所以我想知道的是,如果有一种有效的方法可以做到这一点:
感谢您的时间
答案 0 :(得分:0)
不幸的是,您不能使用更少的内存并使用多线程来呈现不同的PDF,每个线程都会分配内存来处理其PDF,内存使用量将与线程数呈线性关系。 如果您可以使用多个线程处理相同的PDF(相同数据),这是一个完全不同的故事,但我不认为这很容易做,因为线程需要频繁同步,使多线程毫无意义。
如果他们不需要共享任何信息,实现多线程将是微不足道的,您可以只实现https://wso2is.com:9443/samlsso?SAMLRequest=[base64stuff]接口,创建通过Runnable实现的新线程,并等待它们以{结束{3}}
如果我是你,我会使用Runnable来加载当时的部分数据集,这可能会允许你使用多个线程。