Java Apache NiFi OutOfMemoryError在生成大型流文件时出错

Java Apache NiFi OutOfMemoryError在生成大型流文件时出错,java,out-of-memory,apache-nifi,Java,Out Of Memory,Apache Nifi,我在Centos 7上使用ApacheNIFI 0.4.1和Java7,并试图根据一些传入数据创建一个流文件。由于生成了大量数据,我遇到了“OutOfMemoryError:Java堆空间”异常 据我所知,这是因为NiFi在写入流文件时提供的输出流是ByteArrayOutputStream,因此数据存储在内存中。我可以理解为什么会发生这种情况,但我能够使用GetFile/PutFile来处理一个更大的文件(我尝试加载一个10Gb的文件,记录其属性并将其写入另一个位置,这很有效)。这里有我遗漏的

我在Centos 7上使用ApacheNIFI 0.4.1和Java7,并试图根据一些传入数据创建一个流文件。由于生成了大量数据,我遇到了“OutOfMemoryError:Java堆空间”异常

据我所知,这是因为NiFi在写入流文件时提供的输出流是ByteArrayOutputStream,因此数据存储在内存中。我可以理解为什么会发生这种情况,但我能够使用GetFile/PutFile来处理一个更大的文件(我尝试加载一个10Gb的文件,记录其属性并将其写入另一个位置,这很有效)。这里有我遗漏的东西吗?有没有办法编写更大的流文件?或者NiFi 0.5.0是否有任何改变来帮助我


注意:我不认为增加可用的java堆空间量可以解决我的问题

正如评论中强调的那样,单元测试框架使用内容存储库的变体,其中所有内容都存储在内存中,以提高测试速度。实际上,如果内容很大,则直接对堆施加压力。在实际的应用程序中,这些项目通过磁盘的流被读取到内容存储库或从内容存储库读取


如果扩展读取内存中的内容而不是使用流处理大文件,那么这些问题也可能出现在核心框架中

如果你没有写注释lol,我会给出一条评论,说要增加java堆。数据必须存储在内存中吗?也许将所有内容写入文件以便以后处理会更好?Idk,只是一个小小的建议。我刚刚试着将它写入一个文件,然后将它加载到新的流文件中,就像GetFile那样(使用importFrom),但它仍然失败。好吧,很抱歉,我不知道。好吧,这样做确实有效,只是在单元测试时不行!问题是单元测试?