有64位Ruby吗?

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

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

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

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 

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

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

Interesting Posts