На недавней виртуальной машине Hotspot интернированные строки выглядят так же, как и любые другие - единственное отличие состоит в том, что базовый массив char отслеживается виртуальной машиной (я думал, что у него есть дополнительная ссылка на JNI, но он не отображается в дампе YourKit- будет интересно исследовать).
Тем не менее, Yourkit обеспечивает проверку памяти на наличие дублированных строк, что, я считаю, делает то, что вам нужно.Если вы объедините его с «Trace Allocations», вы можете сразу перейти к коду, который выделил эти строки.
См. http://www.yourkit.com/docs/95/help/inspections_mem.jsp#duplicate_strings
-
Получить список строк, добавленных между двумя точками во времени, проще:
- Получить две кучи-дампы с использованием jmap или вашего любимого профилировщика
- сделать разбор куч
- Показать все экземпляры класса String
Должен быть выполним с любым профилировщиком или даже jhat(если вы достаточно терпеливы).Если вы используете YourKit, вы можете использовать функцию закладки и сделать только один снимок кучи.