为什么在Ruby中下载大文件后内存泄漏?

时间:2018-11-15 16:47:20

标签: ruby performance memory memory-leaks

我有一些Ruby正在下载大型XML文件(约380MB)。

我正在使用on_body来批量下载:

to = File.open('/path', 'wb')

http = HTTPI::Request.new(options)
http.url   = uri
http.on_body { |chunk| to.write(chunk) }

HTTPI.get(http, :net_http)

to.close

on_body,根据其文档(https://www.rubydoc.info/gems/httpi/HTTPI/Request#on_body-instance_method)将分块读取响应,以防止占用内存。

这似乎可行,实际上下载文件后,我的内存使用量跃升了约178 MB,因此在流式传输文件时似乎发生了一些垃圾回收,否则我希望它会因整个文件而跳跃大小。

但是,后遗症,那178MB只是永远挂了。

由于文件下载,我将其范围缩小了。如果我从磁盘读取相同的XML文件,则在处理完文件后,内存仅增加了约4MB。

0 个答案:

没有答案