似乎人们正在为 64 位平台编译 MRI Ruby (1.8.7)。我已经搜索和阅读了一段时间,但没有真正得到我想要的答案。我想知道的是,你们中是否有人真的在 Ruby 中使用了超过 4GB 的内存?如果这样编译,Ruby 真的是 64 位吗?
我在源代码中发现注释表明它没有在 64 位上进行测试。例如它说“BigDecimal 尚未在 64 位整数系统上进行编译和测试。”在评论中大十进制 http://www.sfr-fresh.com/unix/misc/ruby-1.8.7-p174.tar.gz:a/ruby-1.8.7-p174/ext/bigdecimal/bigdecimal_en.html#STRUCT.
了解 Ruby 的其他实现在 64 位中的表现也很有趣。
MRI(1.8.x 和 1.9.x 系列)可以编译为 64 位。
例如,Snow Leopard 捆绑了编译为 64 位的 1.8.7。这可以在活动监视器中看到,或者从irb
例如,通过询问42.size
。如果以 64 位编译,您将获得 8(字节),否则为 4(字节)。
Ruby 将能够访问超过 4G 的内存。例如:
$ 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 机器上它也可以工作。该进程的虚拟 RAM 大小为 4.02 G。
我更新了 bigdecimal html 文件中的注释,该文件已过时(从 2003 年 3 月开始......)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)