Ruby 对象空间排序顺序

Ruby 对象空间排序顺序,ruby,garbage-collection,heap,Ruby,Garbage Collection,Heap,我最近遇到了一些麻烦 是否定义了排序顺序 如果我调用ObjectSpace.each_object(SomeClass).to_a两次,我保证排序顺序相同吗?为什么你会期望任何特定的顺序?假设我想构造一个有向对象图,其中给定节点可以有任意数量的转换。比如说,我想用遗传算法随机通过这张图。一种可能的方法是将其编码为整数数组,其中每个整数表示转换数。这将取决于ObjectSpace。每个对象(MyAwesomeVertex)。要使排序顺序在初始化方法和适应度函数中都相同,我并不质疑该实用程序。文档中

我最近遇到了一些麻烦

是否定义了排序顺序


如果我调用ObjectSpace.each_object(SomeClass).to_a两次,我保证排序顺序相同吗?

为什么你会期望任何特定的顺序?假设我想构造一个有向对象图,其中给定节点可以有任意数量的转换。比如说,我想用遗传算法随机通过这张图。一种可能的方法是将其编码为整数数组,其中每个整数表示转换数。这将取决于ObjectSpace。每个对象(MyAwesomeVertex)。要使排序顺序在初始化方法和适应度函数中都相同,我并不质疑该实用程序。文档中没有提到订单,那么为什么期望有任何特定的订单呢?我可以看到一个GC过程在你背后重新安排事情的顺序,特别是当你在图形中创建和销毁对象的时候。即使各种实证结果或对Ruby源代码的分析表明秩序得到了维护,我也不会相信这一点,一个简单的版本更改可能会使所有这些失效。这充其量是一个非常危险的用例<例如,code>ObjectSpace还包含尚未被垃圾收集的死对象。你真的想把这些画出来吗?