The limit is set by the 32bit signed int that is used to store it's length: about 2 billion characters. The string does also contain 4 bytes that are not part of the string but are used to handle it: the lengt of it (the mentioned 32 Bit).As far as I remember a string uses Stringlength plus 4 bytes in memory.
EDIT: degac was faster :.(
EDIT: degac was faster :.(