When a String is stored in memory, it has the form of char array where each char takes two bytes. However, when it is serialized in order to be passed over network using some kind of marshaller, usually UTF-8 representation is used where ASCII chars (which may form a majority of tested characters) take only 1 byte.
Then, if you need to execute something on the caches with some data load (e.g. 1 GB), and then retrieve object with negligable size, you can use Strings for this purpose. However, if your test should cause the entries to be transported over network (for example if you overwrite the values with different Strings), you're actually sending less data over the network than you will store then in memory.