gpt4 book ai didi

java - 如何将数据库中的大量数据存储到 XML(内存问题,第二部分)?

转载 作者:行者123 更新时间:2023-12-01 05:56:04 25 4
gpt4 key购买 nike

我已经asked the question the other day并重写了代码以反射(reflect)解决方案,但现在我遇到了新问题。这是代码。

这是调用/写入函数;我有 8 种类型的 proizvod,它们生成 8 个 XML 文件。创建 XML 文件后,需要通过自定义 zip 类对其进行压缩:

generateXML(tmpParam,queryRBR,proizvod.getOznaka());
writeToZip(proizvod.getOznaka());

这是在writeToZip里面:

ZipEntry ze = new ZipEntry(oznaka + ".xml");
FileOutputStream fos = new FileOutputStream(new File(zipFolder + oznaka + ".zip"));
ZipOutputStream zos = new ZipOutputStream(fos);
zos.putNextEntry(ze);
FileInputStream fis = new FileInputStream(new File(zipFolder + oznaka + ".xml"));
final byte[] buffer = new byte[1024];
int n;
while ((n = fis.read(buffer)) != -1)
zos.write(buffer, 0, n);
zos.closeEntry();
zos.flush();
zos.close();
fis.close();

这是在generateXML内部:

PrintWriter writer = new PrintWriter(new BufferedOutputStream(new FileOutputStream(zipFolder +oznaka + ".xml")));
writer.print("\n<?xml version=\"1.0\" encoding=\"UTF-8\" ?>");
writer.print("\n<PROSTORNE_JEDINICE>");
stmt = cm.getConnection().createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
String q = "";
rs = stmt.executeQuery(q);
if (rs != null) {
System.out.println("Početak u : " + Util.nowTime());
while (rs.next()) {
writer.print("\n\t<row>");
writer.print("\n\t\t<ID>" + Util.transformToHTML(rs.getInt("id")) + "</ID>");
writer.print("\n\t\t<JED_ID>" + Util.transformToHTML(rs.getInt("jed_id")) + "</JED_ID>");
//etc
writer.print("\n\t</row>");
}
System.out.println("Kraj u : " + Util.nowTime());
}
writer.print("\n</PROSTORNE_JEDINICE>");

generateXML 部分仍然需要大量内存(如果我猜对了,它会尽可能地一点一点地占用),而且我不知道如何优化它(使用提供 writer.print 函数的替代方法)?

最佳答案

我立即看到的两件事(可能是复制/粘贴错误)是,您没有关闭generateXml中的PrintWriter(编写器),并且没有关闭FileOutputStream em> (fos) 在 WriteToZipFile 中。

要查找内存故障,我建议 dotTrace - 也许您可以在代码行为中发现一些不规则之处。

关于java - 如何将数据库中的大量数据存储到 XML(内存问题,第二部分)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2904813/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com