有64位的Ruby吗?

有64位的Ruby吗?,ruby,64-bit,Ruby,64 Bit,人们似乎正在为64位平台编译MRI Ruby(1.8.7)。我已经搜索和阅读了一段时间,但没有真正得到我想要的答案。我想知道的是,你们中是否有人在Ruby中实际使用了超过4GB的内存?如果这样编译,Ruby真的是64位吗 我在源代码中发现了一些注释,表明它没有在64位上进行测试。例如,它在评论中说“BigDecimal尚未在64位整数系统上编译和测试” 了解Ruby的其他64位实现也是很有趣的。MRI(1.8.x和1.9.x行)可以编译为64位 例如,雪豹与编译为64位的1.8.7捆绑在一起。这

人们似乎正在为64位平台编译MRI Ruby(1.8.7)。我已经搜索和阅读了一段时间,但没有真正得到我想要的答案。我想知道的是,你们中是否有人在Ruby中实际使用了超过4GB的内存?如果这样编译,Ruby真的是64位吗

我在源代码中发现了一些注释,表明它没有在64位上进行测试。例如,它在评论中说“BigDecimal尚未在64位整数系统上编译和测试”

了解Ruby的其他64位实现也是很有趣的。

MRI(1.8.x和1.9.x行)可以编译为64位

例如,雪豹与编译为64位的1.8.7捆绑在一起。这可以在活动监视器中看到,也可以通过询问
irb
查看,例如
42.size
。如果以64位编译,则得到8(字节),否则得到4(字节)

Ruby将能够访问超过4G的ram。例如:

$ irb
>> n = (1 << 29) + 8
=> 536870920
>> x = Array.new(n, 42); x.size
=> 536870921  # one greater because it holds elements from 0 to n inclusive
$irb
>>n=(1 536870920
>>x=数组。新(n,42);x.size
=>536870921#更大一个,因为它包含从0到n(包括0到n)的元素
如果您没有超过4 G或ram,则获取最后一行需要一段时间,因为操作系统将进行大量交换,但即使在我的4 GB机器上也可以。该进程的虚拟ram大小为4.02 G


我更新了bigdecimal html文件中的注释,该文件已过时(从2003年3月开始…

如何将这些64位整数中的536870920(4GB+8)存储在内存中,这可能吗?是的,没问题。我相应地修改了我的答案。酷,如果你稍微扩展一下,你可以说这使我成为Ruby的参与者