MRI (линия 1.8.x и 1.9.x) может быть скомпилирована как 64 бита.
Например, Snow Leopard поставляется с 1.8.7, скомпилированным как 64 бита. Это можно увидеть в мониторе активности или из irb
, задав, например, 42.size
. Вы получите 8 (байт), если он скомпилирован в 64 бита, 4 (байт) в противном случае.
Руби сможет получить доступ к 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 ГБ или оперативной памяти, потому что операционная система сильно поменяется, но даже на моей машине с 4 ГБ это работает. Размер виртуальной оперативной памяти для процесса составил 4,02 г.
Я обновил комментарий в файле bigdecimal html, который устарел (с марта 2003 года ...)