【发布时间】:2026-02-05 12:55:01
【问题描述】:
我正在使用字符串缓冲区和字节数组创建两个 CSV 文件。
我使用 ZipOutputStream 来生成 zip 文件。每个 csv 文件将有 14 列的 20K 记录。实际上,记录是从数据库中获取并存储在ArrayList 中的。我必须迭代列表并构建 StringBuffer 并将 StringBuffer 转换为字节数组以将其写入 zip 条目。
我想知道 JVM 需要的内存来完成从将记录存储在ArrayList 中开始的整个过程。
我在下面提供了代码 sn-p。
StringBuffer responseBuffer = new StringBuffer();
String response = new String();
response = "Hello, sdksad, sfksdfjk, World, Date, ask, askdl, sdkldfkl, skldkl, sdfklklgf, sdlksldklk, dfkjsk, dsfjksj, dsjfkj, sdfjkdsfj\n";
for(int i=0;i<20000;i++){
responseBuffer.append(response);
}
response = responseBuffer.toString();
byte[] responseArray = response.getBytes();
res.setContentType("application/zip");
ZipOutputStream zout = new ZipOutputStream(res.getOutputStream());
ZipEntry parentEntry = new ZipEntry("parent.csv");
zout.putNextEntry(parentEntry);
zout.write(responseArray);
zout.closeEntry();
ZipEntry childEntry = new ZipEntry("child.csv");
zout.putNextEntry(childEntry);
zout.write(responseArray);
zout.closeEntry();
zout.close();
请帮我解决这个问题。提前致谢。
【问题讨论】:
-
您在执行此操作时遇到
OutOfMemoryError吗? -
将其增加到一个巨大的数字,然后运行应用程序并准确监控分配的内容
-
该应用程序将被多个用户使用。当多个用户访问该应用程序时,我期待 OutOfMemoryError。所以我想知道每个用户的大约内存使用量。
-
@RumeshKumar 使用分析器。
标签: java object memory-management csv