0 - http://java-performance.info/string-intern-in-java-6-7-8/
https://shipilev.net/jvm-anatomy-park/10-string-intern/
> In almost every project we were taking care of, removing String.intern() from the hotpaths, or optionally replacing it with a handrolled deduplicator, was the very profitable performance optimization. Do not use String.intern() without thinking very hard about it, okay?
So depending on your situation, you could want either, both, or neither. There is some overlap, however. If you have a lot of ascii strings but also a high level of duplication, either approach will save some memory, but if deduplication by itself saves x bytes, and compact strings saves y, using both will save a lot less than x + y bytes.
And, like the later poster says, don't use String.intern() for deduplication.
They're different fixes for the same problem: high memory usage. Depending on the situation you can use one or both, as you say.