我有一个问题,我会尽力解释它。
批量处理框架(如spring批处理)处理少量对象。
他们应该逐个处理对象,这样他们就不会遇到java堆空间错误。
这些框架或系统会对它们产生的垃圾做些什么?
他们有时打电话给System.gc()
还是以不同的方式处理它?</ p>
答案 0 :(得分:0)
垃圾收集将在抛出OutOfMemoryError
之前完成,因此消耗量会超过清理时间,因此不会耗尽内存。
这个问题过于宽泛,无法涵盖哪些框架可能会或可能不会,但一般来说,最好尽可能保留对象的引用。这意味着采用“流”方法进行处理 - 在处理下一个对象之前,对象上的所有操作都会发生(例如,从输入流,进程,写入到输出读取)。
这与读取所有对象,处理所有对象然后写入所有输出形成对比 - 这需要大量内存使用。