Анализ профиля JVisualVM - поиск источника большого количества примитивных типов? - PullRequest
3 голосов
/ 13 марта 2010

Я пытаюсь уменьшить объем памяти моего приложения. Дампы кучи JVisualVM сообщают, что объекты, занимающие наибольшее пространство:

  • символ []
  • байт []
  • ИНТ []

Что не особенно полезно. Как я могу отследить эти объекты обратно к родительским классам, которые их содержат?

Спасибо

Ответы [ 2 ]

4 голосов
/ 07 марта 2011

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

3 голосов
/ 13 марта 2010

Эти примитивные массивы, вероятно, будут внутренним состоянием таких вещей, как String, которое сохраняет свое состояние в char[]. Хороший профилировщик поймет это и будет иметь понятие «оставшийся размер», который описывает размер объектов, включая размер их подобъектов. Это указывало бы на то, что String занимало пространство, а не char[].

Однако я не вижу упоминания о «сохраняемом размере» в VisualVM. Похоже, он не имеет надлежащих возможностей профилирования коммерческих альтернатив.

Чтобы увидеть, о чем я говорю, попробуйте загрузить оценку YourKit и подключите ее к своему приложению. Это намного сложнее, чем VisualVM, но он может дать вам размер сохраняемых объектов кучи, и это довольно освещает. Он также покажет вам, что ссылается на каждый из объектов в куче, чтобы вы могли отслеживать утечки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...