我遇到了一个奇怪的错误
failed to allocate memory (NoMemoryError)
zlib(finalizer): the stream was freed prematurely.当我尝试这样做时,它与第一次迭代进行得很好
array.each_slice(40000) do |result|
#writing this result array into the excel
end但当第二次迭代进行时,就会出现上面提到的错误。这里有什么问题?有人能帮我一下吗?
如果计数为50000,则在第一次迭代中也会出现同样的问题。
发布于 2020-08-24 21:27:32
嗯,正如错误所说,您可能正在耗尽内存。
也许可以尝试在10_000上迭代1000个批次
你最好创建一个文件并写入它,而不是在memory Array中创建一个巨型文件。请注意,只有当您的硬件支持时,写入文件才是最佳的,您可能/可能不具有与生产服务器上的MacBook相同的硬件。所以你可能会想要检查一下。
此外,如果这是每5000条记录的后台工作,那么调用GC.start也不是一个坏主意。
最后,使用类似memory profiler的命令检查内存分配
https://stackoverflow.com/questions/63560519
复制相似问题