Я заметил, что идентификаторы объектов присваиваются нелогичным образом. Чем раньше создается объект, тем больше его идентификатор объекта. Я бы подумал, что они будут назначены в порядке возрастания, а не наоборот.
Например:
obj1 = Object.new
obj2 = Object.new
obj3 = Object.new
p obj1.object_id # => 4806560
p obj2.object_id # => 4806540
p obj3.object_id # => 4806520
Почему они назначаются таким образом, а также почему шаг 20, а не 1 в коде, выполняемом интерпретатором Ruby, но гораздо большая разница между идентификаторами объектов для кода, выполняемого irb Ruby?
object_id
- это просто целое число, которое однозначно идентифицирует объект, любой конкретный порядок, который, по вашему мнению, вы видите, является чисто артефактом реализации. - person mu is too short   schedule 03.05.2012