Sometimes you don't want to suck up all of the RAM on a non-embedded machine, either. Also faster startup times and no collector pauses. A lot of times those are required.
If you don't know what to look for you could end up looking for a long time.
Minimum String memory usage (bytes) = 8 * (int) ((((no chars) * 2) + 45) / 8)
http://www.javamex.com/tutorials/memory/string_memory_usage....
Objects in general also have significant overhead.