Ruby 2.1.5p273 Сравнение времени с ростом / утечкой памяти? - PullRequest
1 голос
/ 17 октября 2019

Я потратил неделю, чтобы понять, почему один из моих сценариев на ruby ​​рос в памяти. Я обнаружил линию преступника, но не могу понять, почему она растет в памяти в одном случае, а не в другом:

У меня есть простой вечный цикл с условием для объекта Time:

i        = 0
lastTry = Time.now()

until i == 5    
  if (lastTry + 0.75) <  Time.now
    puts '.'
    lastTry = Time.now()
  end    
end

Это произведет процесс, который будет потреблять память до тех пор, пока мой оперативный памяти не заполнится, и в конечном итоге мое ядро ​​перестанет позволять мне вилки или паникует в какой-то момент. Плохо для моего клиента.

Если я заменю свой if на это:

if ((Time.now() - lastTry) * 1000.0) > 750.0

Это больше не пожирает память.

-> как указано в комментарии, я могу подтвердить, что происхождение этого связано с устаревшей версией ruby, используемой в моей клиентской среде.

...