Анализ памяти с помощью MAT - вопрос про символы UTF - PullRequest
1 голос
/ 23 февраля 2011

Я получаю файл .hprof и анализирую его с помощью Eclipse Memory Analyzer (MAT).

Я запускаю Отчет о верхнем компоненте и в разделе Duplicate Strings MAT обнаруживает несколько экземпляров String с идентичным содержимым.

Я работаю с String.intern() и другими домашними заданиями для меня, но теперь это не мой вопрос. Этот отчет показывает мне дублированные строки, подобные этим:

  • \ u0000 \ u0000 \ u0000 \ u0000 \ u0000 \ u0000 \ u0000 \ u0000 \ u0000 \ u0000 ....
  • \ u000a \ u0009 \ u0009
  • \ u000a \ u0009 \ u0009 \ u0009 \ u0009 И так далее.

Другие строки читаемы, но как насчет этих? Я думаю, что они из анализа XML (я использую JibX в своем приложении).

Мои вопросы:

  • Как вы думаете, эти строки идут? Как я могу их лучше проанализировать?
  • Если они из анализа XML или чего-то еще, как я могу очистить / очистить их после анализа? Может быть, версия JibX 1.0.1 слишком старая для этих проблем?

Любые предложения по поводу этих UTF-8, таких как Strings, будут очень благодарны. Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 24 февраля 2011

Вы можете щелкнуть правой кнопкой мыши по подозрительной строке и выбрать Список объектов / С входящими ссылками.Это покажет вам объекты, которые ссылаются на ваши строки.

incoming references

1 голос
/ 23 февраля 2011

Интересно видеть строки со многими символами \ u0000, что весьма необычно, учитывая тот факт, что строки не заканчиваются на 0 в Java, поэтому они создаются из конструктора String (byte []), возможно, String ( byte [], кодировка) конструктор из байтовых массивов, содержащих 0s.

Я бы использовал профилировщик и проанализировал графы вызовов этих конструкторов. Тогда вы найдете виновника.

...