0
我有一个问题,我会尽我所能解释它。批处理系统如何处理很多对象
批处理框架,如spring批处理少量的对象。
它们应该逐个处理对象,以免它们遇到Java堆空间错误。
这些框架或系统会对垃圾产生什么影响?
有时候他们打电话给System.gc()
,或者他们用不同的方式处理它?
我有一个问题,我会尽我所能解释它。批处理系统如何处理很多对象
批处理框架,如spring批处理少量的对象。
它们应该逐个处理对象,以免它们遇到Java堆空间错误。
这些框架或系统会对垃圾产生什么影响?
有时候他们打电话给System.gc()
,或者他们用不同的方式处理它?
垃圾收集将在投掷OutOfMemoryError
之前完成,所以您不会用完内存,因为消耗超过了清理。
这个问题太笼统,不能涵盖什么框架可能会或可能不会做什么,但总的来说,最好尽可能少地保留对象的引用。这意味着采用“流”方式处理 - 在处理下一个对象之前,对象上的所有操作都会发生(例如,从输入流,流程,写入输出中读取)。
这与读取所有对象,处理所有对象然后写入所有输出相反 - 这需要大量内存使用。
他们让垃圾收集器清理,通常做得非常好 - 除非程序引用许多不再需要的对象。 – meriton
你有什么特定的问题吗?您关心的具体用例/场景? –
我读了一些关于* System.gc()*的使用的说明,这是一种不好的做法。我知道它的用法并不能保证任何东西,但我真的不明白它为什么如果它没有任何有害的后果使用如此糟糕。 –