Java BufferedWriter导致内存超出异常

Java BufferedWriter导致内存超出异常,java,Java,我正在使用BufferedWriter将我的内容写入文件。[实际上文件是HDFS。我正在通过reducer编写。] FileSystem fs = FileSystem.get(new Configuration()); Path path = new Path("temp.txt"); OutputStream os = fs.create(path); bufferedWriter = new BufferedWriter(new OutputStrea

我正在使用BufferedWriter将我的内容写入文件。[实际上文件是HDFS。我正在通过reducer编写。]

FileSystem fs = FileSystem.get(new Configuration());
    Path path = new Path("temp.txt");       
    OutputStream os = fs.create(path);
    bufferedWriter = new BufferedWriter(new OutputStreamWriter(os));
这就是我创建BufferedWriter的方式。[减速器的设置方法]

在减少方法中写入部分

try {
        bufferedWriter.write(dt+ExporterConstants.MAP_OUTPUT_KEY_SEPERATOR+hdfsPath+ExporterConstants.MAP_OUTPUT_KEY_SEPERATOR+inputSplit+"\n");
    } catch (IOException e1) {
        e1.printStackTrace();
    }
我将在减速器的清理方法中关闭此方法

我的问题:

我遇到了一个错误,比如
容器的运行超出了物理内存限制。当前使用情况:使用了5.5 GB物理内存中的5.5 GB;使用了8.7 GB的11.5 GB虚拟内存
。所以我假设我正在缓冲所有数据,并在关闭方法时只刷新一次

这是问题的根源吗? 我如何有效地冲水


我也愿意使用其他作家。有什么建议吗?

堆大小对于您提供的内存来说似乎太大了。JVM可以使用最大堆大小来尝试使程序运行更快,而不仅仅是因为保留了数据


尝试减少JVM的内存消耗。如果您将其设置得太低,无法保存数据,则会出现OutOfMemoryError。

@GopsAB您有什么疑问?对不起,我想不出更简单的说法了。