ruby RTEssetract在处理少量文档后内存不足

ruby RTEssetract在处理少量文档后内存不足,ruby,Ruby,我正在使用rtesseract以循环方式读取扫描的文档…我首先使用rmagick将pdf处理为jpg文件,然后循环它们并运行此程序 files_to_convert.each do |tfile| image = RTesseract.new(tfile, :lang => "slk") final_text += image.to_s end 在一定数量的文档(10-30)之后,系统会在syslog中使用消息终止作业 7月7日

我正在使用rtesseract以循环方式读取扫描的文档…我首先使用rmagick将pdf处理为jpg文件,然后循环它们并运行此程序

files_to_convert.each do |tfile|

          image = RTesseract.new(tfile, :lang => "slk")

          final_text += image.to_s

       end
在一定数量的文档(10-30)之后,系统会在syslog中使用消息终止作业

7月7日22:12:09 OSBOX内核:[114590.313430]内存不足:杀死 处理23567(红宝石)得分510或牺牲孩子7月7日22:12:09 OSBOX内核:[114590.313468]已终止进程23567(ruby) 总虚拟机容量:3569292kB,anon rss:2867500kB,文件rss:0kB

所以我尝试通过简单的调用实现垃圾收集器 在读取和处理整个文档后启动GC,但没有区别。在输入了大量的文档后,系统就停止了工作

我有4GB的RAM专门用于开发虚拟机,运行ruby 2.2.3


谢谢

你到底想做什么?您要放入
final\u text
的文件大小是多少?GC没有帮助,因为您有意将所有内容放入
final_文本
,无论出于何种原因,这可能是您所需要的,因此没有多少东西留给GC来清理它……正如draganstankovic所说,
final_文本
一定越来越大了。。。您是否需要将所有图像放在一个文件中?你能把它们写进tmp文件吗?我有上千个pdf文档。每个pdf文件可能有1-30页。在文件中,convert变量是将一个pdf拆分为多个图像(1-30),然后每个图像都由rtesseract处理。最后的文本在处理完每个pdf后都会被清除,因此它不会将所有pdf压缩为一个文件,同时我将2.2.3 ruby升级为2.2.10,而不是现在运行时使用的2.8-3GB内存。同一个作业消耗800-1.2GB内存,目前运行良好,因此我将监视它