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

时间:2018-01-29 20:19:15

标签: 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().getBytes();
FSDataOutputStream fsOutStream = fs.create(newFilePath);
fsOutStream.write(byt);
fsOutStream.close();

1 个答案:

答案 0 :(得分:1)

不是构建一个大StringBuilder来存储所有内容,而是一次写一条记录到文件中。

未经测试的例子:

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