Почему Ruby склонен присваивать идентификаторы объектов в порядке убывания?

Я заметил, что идентификаторы объектов назначаются нелогичным образом. Чем раньше создается объект, тем больше его идентификатор объекта. Я бы подумал, что они будут назначены в порядке возрастания, а не наоборот.

Например,:

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? ирб?

8
задан Matty 3 May 2012 в 00:05
поделиться