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

iqjalb3h  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(342)

我有一个数据生成器,可以将数据写入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();
mbskvtky

mbskvtky1#

而不是建造一个大的 StringBuilder 要存储所有内容,请一次向文件中写入一条记录。
未经测试的示例:

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

相关问题