我注意到对象的 ID 以违反直觉的方式分配。对象创建得越早,其对象 ID 就越大。我原以为它们会按升序分配,而不是相反。
例如:
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 的 irb 运行的代码的对象 ID 之间的差异要大得多?