Collectives™ on Stack Overflow

Find centralized, trusted content and collaborate around the technologies you use most.

Learn more about Collectives

Teams

Q&A for work

Connect and share knowledge within a single location that is structured and easy to search.

Learn more about Teams

What is current status of Oracle Java HotSpot VM performance options (+UseStringCache, +UseCompressedStrings, +OptimizeStringConcat)

Ask Question

I was reading Java HotSpot VM Options . I've seen some interesting VM switches, mostly pertaining to Strings - which is of great value to me since my app is doing some heavy String manipulation. Those are:

  • -XX:+UseStringCache
  • -XX:+UseCompressedStrings
  • -XX:+OptimizeStringConcat
  • I was wondering - are these switches on by default? What is real world experience in using them? Do they make a difference?

    I know that -XX:+UseCompressedStrings was dropped in Java 7 on the basis it was too hard to support.

    For Java 7 update 40

    $ java -XX:+PrintFlagsFinal 2>&1 | grep UseStringCache
         bool UseStringCache                            = false           {product}           
    $ java -XX:+PrintFlagsFinal 2>&1 | grep OptimizeStringConcat
         bool OptimizeStringConcat                      = true            {C2 product}  
                    I see that you posted similar question as I have last year. That basically covers what I needed to know :)
    – Rade_303
                    Sep 27, 2013 at 10:57
    

    Considering String performance, have a look at the -XX:+PrintStringTableStatistics and -XX:StringTableSize=. Java 7 comes with nice features that allow tuning of String cache when using the interned Strings. This way you can optimize the String cache size.

    And, a related String Performance Q/A: Java GC tuning for strings

    Based on my check of JDK6u21, JDK7u21 and JDK8u191 using PrintFlagsFinal, we have the following values:

                                   JDK6u21       JDK7u21       JDK8u191
    -XX:+UseStringCache              false         false   <unsupported>
    -XX:+UseCompressedStrings        false  <unsupported>  <unsupported>
    -XX:+OptimizeStringConcat        false          true           true
            

    Thanks for contributing an answer to Stack Overflow!

    • Please be sure to answer the question. Provide details and share your research!

    But avoid

    • Asking for help, clarification, or responding to other answers.
    • Making statements based on opinion; back them up with references or personal experience.

    To learn more, see our tips on writing great answers.