如何解决SUPERCSV OutOfMemoryError:CsvBeanWriter中的Java堆空间
我有一种将数据导出到csv文件的方法,当报表的记录少于100k时,它可以正常工作;当报表更大时,又出现OutOfMemoryError,问题就来了。
您可以看到我正在使用SUPERCSV库,这是我编写的要导出到csv的代码。我认为问题出在试图写入文件的for循环中,您有什么解决方案可以防止OutOfMemoryError?
致谢。
public void exportDataToCsv(){
String csvFileName = "report.csv";
response.setContentType("text/csv");
// creates mock data
String headerKey = "Content-Disposition";
String headerValue = String.format("attachment; filename=\"%s\"",csvFileName);
response.setHeader(headerKey,headerValue);
//list to be exported to csv file
List<Vulnerability> vulnerabilities = vulnerabilityService.getVulnerabilities();
// uses the Super CSV API to generate CSV data from the model data
ICsvBeanWriter csvWriter = new CsvBeanWriter(response.getWriter(),CsvPreference.STANDARD_PREFERENCE);
String[] header = { "id","Name","Status","Owner","Reader" };
csvWriter.writeHeader(header);
for ( Vulnerability vuln : vulnerabilities) {
csvWriter.write(vuln,header);
}
csvWriter.close();
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。