Недавно я читал обо всех аргументах JVM, доступных в JRE 6 [Параметры Java VM] и увидел это:
-XX:+StringCache : включает кэширование часто выделяемых строк.
Теперь у меня всегда было впечатление, что Java хранит пул интернированных (правильное слово?) строк, и когда он делает что-то вроде конкатенации строк с литералами, он не создает новые объекты, а извлекает их из этого пула. Кто-нибудь когда-либо использовал этот аргумент или может объяснить, зачем он нужен?
EDIT: я попытался запустить тест, чтобы увидеть, имеет ли этот аргумент какой-либо эффект, и не смог заставить Sun JVM распознать его. Это было с:
java version "1.6.0_11"
Java(TM) SE Runtime Environment (build 1.6.0_11-b03)
Java HotSpot(TM) Client VM (build 11.0-b16, mixed mode,
sharing)
Так что я не уверен, что этот аргумент вообще работает.