批处理系统如何处理大量对象

时间:2015-06-21 23:07:38

标签: java garbage-collection spring-batch batch-processing

我有一个问题,我会尽力解释它。

批量处理框架(如spring批处理)处理少量对象。

他们应该逐个处理对象,这样他们就不会遇到java堆空间错误。

这些框架或系统会对它们产生的垃圾做些什么?

他们有时打电话给System.gc()还是以不同的方式处理它?<​​/ p>

1 个答案:

答案 0 :(得分:0)

垃圾收集将在抛出OutOfMemoryError之前完成,因此消耗量会超过清理时间,因此不会耗尽内存。

这个问题过于宽泛,无法涵盖哪些框架可能会或可能不会,但一般来说,最好尽可能保留对象的引用。这意味着采用“流”方法进行处理 - 在处理下一个对象之前,对象上的所有操作都会发生(例如,从输入流,进程,写入到输出读取)。

这与读取所有对象,处理所有对象然后写入所有输出形成对比 - 这需要大量内存使用。