JVM-XX: + аргумент StringCache?

Еще одно отличие:

Таблица var может быть доступна только из операторов внутри процедуры, которая ее создает, но не из других процедур, вызываемых этой процедурой, или из вложенного динамического SQL (через exec или sp_executesql).

Область временных таблиц, с другой стороны, включает в себя код в вызываемых процедурах и вложенный динамический SQL.

Если таблица, созданная вашей процедурой, должна быть доступна из других вызываемых процедур или динамического SQL, вы должны использовать временную таблицу. Это может быть очень удобно в сложных ситуациях.

19
задан Gandalf 29 June 2009 в 21:29
поделиться

4 ответа

Мне не удалось найти ни одной JVM, которая хотя бы принимала этот предполагаемый аргумент - так что, думаю, больше нечего сказать.

0
ответ дан 30 November 2019 в 05:13
поделиться

Я считаю, что при использовании с -XX: + AggressiveOpts он позволяет возвращать те же объекты String при создании String ] с тем же текстом (но, конечно, не через new String ). Существует фаза профиля, на которой создается кеш, и после этого кеш переключается в режим только для чтения. Он получает более высокие баллы в некоторых тестах.

6
ответ дан 30 November 2019 в 05:13
поделиться

Мне тоже не удалось заставить вышеуказанное работать, но последний JBB @ spec.org показывает, что он использует: -XX: -UseStringCache. Мне придется повторно запустить тесты, чтобы увидеть, имеет ли это значение (приложение с тяжелым XML).

1
ответ дан 30 November 2019 в 05:13
поделиться

Мне также не удалось найти JVM, которая бы соответствовала этому параметру; как отмечалось, качество и, следовательно, полезность документации по параметрам JVM ужасны, и все же по некоторым причинам кажется, что это область, в которой поставщики JVM видят место для конкурентной дифференциации - хотя, честно говоря, Oracle / Sun - безусловно, худший вариант.

В любом случае, если вы обнаружите, что ваше приложение в какой-то определенной области многократно использует небольшое количество строковых значений, тогда определенно имеет смысл использовать интернирование - с помощью метода String.intern () для возврата значения интерн-пула. Обратите внимание, что вы должны использовать возвращаемое значение, это не побочный эффект для исходного значения.

Как и в случае со всеми настройками профилирования / производительности, это нужно делать осторожно с помощью метрик и тестирования. Это может быть значительным (было для меня), но если пул значений не мал, это ухудшает производительность, и вам нужно знать, что пул значений String хранится в Perm Gen, и поэтому его использование повлияет на использование памяти, GC и т. д.

1
ответ дан 30 November 2019 в 05:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: