有64位Ruby吗?

Jon*_*röm 5 ruby 64-bit

似乎人们正在为64位平台编译MRI Ruby(1.8.7).我一直在寻找和阅读一段时间而没有真正得到我想要的答案.我想知道的是,如果你们中的任何人实际上在Ruby中使用了超过4GB的内存?如果以这种方式编译,Ruby真的是64位吗?

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

了解Ruby的其他实现如何以64位进行操作也很有趣.

Mar*_*une 7

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

例如,Snow Leopard捆绑了1.8.7编译为64位.例如,这可以在活动监视器中看到,或者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
Run Code Online (Sandbox Code Playgroud)

如果你没有超过4 G或ram,那么获取最后一行将需要一段时间,因为操作系统会交换很多,但即使在我的4 GB机器上它也能工作.该过程的虚拟柱塞尺寸为4.02 G.

我更新了过时的bigdecimal html文件中的注释(从2003年3月开始......)

  • 仅供参考,我更新了big_decimal中过时的评论. (2认同)