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