Java-如何使我的代码使用更少的内存?

Java-如何使我的代码使用更少的内存?,java,hadoop,memory,jvm,hdfs,Java,Hadoop,Memory,Jvm,Hdfs,我有一个数据生成器,可以将数据写入HDFS文本文件。它抛出 java.lang.OutOfMemoryError:java堆空间 数据集非常大时出错。如何使它使用更少的内存 StringBuilder sb = new StringBuilder(); for (Record record : dataSet) { sb.append(record.getCsvData()); sb.append("\n"); } byte[] byt = sb.toString().get

我有一个数据生成器,可以将数据写入HDFS文本文件。它抛出

java.lang.OutOfMemoryError:java堆空间

数据集非常大时出错。如何使它使用更少的内存

StringBuilder sb = new StringBuilder();

for (Record record : dataSet) {
    sb.append(record.getCsvData());
    sb.append("\n");
}

byte[] byt = sb.toString().getBytes();
FSDataOutputStream fsOutStream = fs.create(newFilePath);
fsOutStream.write(byt);
fsOutStream.close();

不要构造一个大的
StringBuilder
来存储所有内容,而是一次向文件写入一条记录

未经测试的示例:

try(FSDataOutputStream fsOutStream = fs.create(newFilePath)) {
    for (Record record : dataSet) {
        fsOutStream.write(record.getCsvData().getBytes());
    }
}

与其构建一个巨大的字符串,为什么不在从数据集中提取文件时将每一行写入文件?这是一个很有价值的建议,谢谢!