String
= > theoretical limit of 2 31 - 1 (32 bits) or 2 63 - 1 (64 bits). I want to see someone able to allocate a string of this size
Integer
= > In Ruby's thesis can be changing the representation and have infinite values
Float
= > Usually limited by architecture. In general between 1.7976931348623158e + 308 and 2.2250738585072014e-308
Array
= > There is no theoretical limit. In practice you can not use nor near the limit. At 32 bits there is a total virtual memory limit of 4GB. You will not be able to create an array with 2 31 - 1 even though each element contains only and Ruby as everything else is reference, this is far from being possible. In 64 bits if you have 2 63 - 1 elements, you will need a lot underneath (certainly that volume is much larger) 250EB (Exabytes). Forget
Hash
= > essentially the same embore needs even more memory. But again, do not worry so much about this limit, the practical limit comes first