Great article. Note that the point about Strings using 2 bytes per char isn't always true. The latest HotSpot VM has an option called "-XX:+UseCompressedStrings" (see
http://www.oracle.com/technetwork/java/javase/tech/vmoptions...) where the VM will try to use ASCII-strings whenever possible to save memory.