2013-09-26 31 views
8

我讀Java HotSpot VM Options。我見過一些有趣的虛擬機開關,主要屬於字符串 - 這對我來說很有價值,因爲我的應用程序正在執行一些繁重的字符串操作。這些都是:什麼是Oracle的Java HotSpot虛擬機性能選項,當前狀態(+ UseStringCache,+ UseCompressedStrings,+ OptimizeStringConcat)

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

我想知道 - 是這些開關在默認情況下?什麼是使用它們的真實世界體驗?他們有所作爲嗎?

回答

5

考慮字符串的性能,看看在-XX:+PrintStringTableStatistics-XX:StringTableSize=。 Java 7帶有很好的功能,可以在使用字符串時調整字符串緩存。這樣您可以優化字符串緩存大小。

而且,相關的字符串性能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

基於我JDK6u21和JDK7u21使用PrintFlagsFinal的檢查,我們有以下值:

       JDK6u21  JDK7u21 

-XX:+UseStringCache    false   false 
-XX:+UseCompressedStrings  false <unsupported> 
-XX:+OptimizeStringConcat  false   true 
相關問題