2013-09-26 19 views
8

私はJava HotSpot VM Optionsを読んでいました。私はいくつかの興味深いVMスイッチを見てきました。主にストリングに関係しています。これは、私のアプリが重いストリング操作をして以来、私にとって大きな価値があります。これらは次のとおりです。Oracle Java HotSpot VMのパフォーマンス・オプション(+ UseStringCache、+ UseCompressedStrings、+ OptimizeStringConcat)の現在のステータス

  • -XX:+UseStringCache
  • -XX:+UseCompressedStrings
  • -XX:+OptimizeStringConcat

私は思っていた - デフォルトでは、これらのスイッチオンになっていますか?それらを使用して実際の経験は何ですか?彼らは違いを生みますか?

答えて

5

については

は、-XX:+PrintStringTableStatistics-XX:StringTableSize=を見てみましょう。 Java 7には、インターネットされたStringを使用するときにStringキャッシュのチューニングを可能にする素晴らしい機能が備わっています。この方法で、Stringキャッシュサイズを最適化できます。

そして、関連する文字列のパフォーマンスのQ/A:Java GC tuning for strings

+0

この回答は私が探していたものです、ありがとう! – RockyMM

12

確認するには、デフォルトでは正確に何をしたい見つけるには

java -XX:+PrintFlagsFinal 

を使用することができます

java -XX:+PrintFlagsFinal | grep UseCompressedStrings 
+0

をこのいただきありがとうございますが、私はでしたより完全な答えを探しています。 – RockyMM

7

私は-XX:+UseCompressedStringsはサポートするにはあまりにも大変だった基づいてのJava 7に落とされたことを知っています。文字列のパフォーマンスを考慮したJava 7の更新40

$ java -XX:+PrintFlagsFinal 2>&1 | grep UseStringCache 
    bool UseStringCache       = false   {product}   
$ java -XX:+PrintFlagsFinal 2>&1 | grep OptimizeStringConcat 
    bool OptimizeStringConcat      = true   {C2 product} 
+1

私は去年持っていたのと同様の質問を投稿したことがわかります。それは基本的に私が知る必要があったものをカバーしています:) – RockyMM

2

がPrintFlagsFinalを使用してJDK6u21とJDK7u21の私のチェックに基づいて、我々は次の値があります。

       JDK6u21  JDK7u21 

-XX:+UseStringCache    false   false 
-XX:+UseCompressedStrings  false <unsupported> 
-XX:+OptimizeStringConcat  false   true 
関連する問題