【发布时间】:2012-04-29 05:11:03
【问题描述】:
我是一名新的软件开发人员,确实需要一些帮助。我的任务是使用 FOP 从数据库中的数据生成 PDF。我编写了该程序并且它可以工作,但并非在所有情况下都可以。只要我检索的数据行数相当少——最多不到 10000 行,一切都会正常工作。当我尝试为大于 10000 行的数据集生成报告时,出现内存不足错误(Java 堆空间)。
从数据库中读取的代码:
while (rs.next()) {
EMP_ID = rs.getString("EMP_ID");
EMP_NAME = rs.getString("EMP_NAME");
EMP_SALARY = rs.getString("EMP_SALARY");
EMP_PROJECT = rs.getString("EMP_PROJECT");
EMP_POSITION = rs.getString("EMP_POSITION");
team.addMember(d.DataGetSet(EMP_ID, EMP_NAME, EMP_SALARY, EMP_PROJECT,
EMP_POSITION));
}
我将程序的内存增加到 2GB,但仍然出现错误。任何解决此问题的帮助将不胜感激。
【问题讨论】:
-
如果不看一些代码,就很难诊断出你的程序可能出了什么问题。请在您的问题中添加相关部分。
-
while (rs.next()) { EMP_ID = rs.getString("EMP_ID"); EMP_NAME = rs.getString("EMP_NAME"); EMP_SALARY = rs.getString("EMP_SALARY"); EMP_PROJECT = rs.getString("EMP_PROJECT"); EMP_POSITION = rs.getString("EMP_POSITION"); team.addMember(d.DataGetSet(EMP_ID, EMP_NAME, EMP_SALARY, EMP_PROJECT, EMP_POSITION)); }
-
tats 我用来检索数据并将其传递给 getter 和 setter 方法的循环,还将它添加到名为成员的 Arraylist 中,以便我可以使用它写入 xml 或 fo 文件
-
我相信你的 team.addMember() 正在创建某种内存中的集合,它只是被填充。虽然 10k 看起来很小,但这可能是个问题。
-
好的,那么我如何将我的所有数据移动到一个数组中,以便我可以将它用于下一步创建 xml 或 fo 文件.....
标签: java database pdf-generation apache-fop