По крайней мере, до чуть более 20_000_000
, то object_id
s чисел в 2 раза число + 1:Есть ли теоретический предел для количества объектов, которые может хранить Ruby?
1454.object_id # => 2909
При вызове object_id
на большом количестве, этот формат не сохраняется. Похоже, есть встроенный предел количества объектов, которые вы теоретически могли бы иметь. Я бежал:
ids = []
100_000_000.times { ids << String.new.object_id }
ids.max # => 22314984
ids.uniq.count # => 44301
Так что из 100-миллионных струнных объектов только около 50 000 были действительно уникальными. Это означает, что 99,95% этих объектов были одним и тем же объектом. Я не знаю, почему это так.
Я считаю, что она ограничивается суммой сервера памяти, но это только мое мнение. –
Просто побежал. Нет, это не вызвало никаких ошибок. Я сомневаюсь, что это полезно, хотя гипотетический предел может быть выше. –
Вы запустили этот код без 'MemoryAllocationError'? –