2014-12-31 3 views
5

Я профилирую приложение, и использование intern для ввода строк действительно помогает. То, что я хочу найти, - это хороший номер для пула объектов, поэтому у меня не будет штрафа за производительность. Как узнать, сколько строк было вставлено в пул?Сколько строк в jvm string pool intern

Я запускаю некоторую производственную трассировку, я не могу рассчитывать на ввод.

Предлагает ли JVM api для этого?

ответ

6

Начиная с JDK7, вы можете использовать флаг JVM для печати информации о размере таблицы строк, например, количества ведер и размера ведра.

Вы также можете использовать инструмент jmap, вызвав команду jmap -heap *process_id*, которая в конце отобразит количество интернированных строк и общий размер (также требуется JDK7 +).

Проверьте, пожалуйста, this blog post.

+0

Это печатает статистику один раз до стандартного вывода, я хотел бы как-то контролировать это. поскольку он освобождает строки, которые не используются, я хочу видеть максимальное количество строк, занимающих его в жизненном цикле приложения. – Zamir

+1

Еще одно полезное сообщение в блоге по этой теме: [* String.intern в Java 6, 7 и 8 - объединение строк *] (http://java-performance.info/string-intern-in-java-6-7-8 /) [Михаил Воронцов] (http://java-performance.info/author/Mike/) –

Смежные вопросы