Rade_303
Rade_303

Reputation: 905

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

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:

I was wondering - are these switches on by default? What is real world experience in using them? Do they make a difference?

Upvotes: 11

Views: 8664

Answers (4)

BeeOnRope
BeeOnRope

Reputation: 65006

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

Upvotes: 6

Aleš
Aleš

Reputation: 9028

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

Upvotes: 6

Peter Lawrey
Peter Lawrey

Reputation: 533720

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}  

Upvotes: 9

Tasm
Tasm

Reputation: 249

To check defaults use

java -XX:+PrintFlagsFinal

To find exactly what you want you can

java -XX:+PrintFlagsFinal | grep UseCompressedStrings

Upvotes: 16

Related Questions