Отслеживать объекты, созданные из моих собственных классов - PullRequest
0 голосов
/ 06 ноября 2018

У меня есть приложение, которое расширяет продукт Eclipse. Если он запускается сверхурочно, использование оперативной памяти увеличивается до максимального пространства кучи.

Приложение не выполняет никаких действий, оно просто остается в фоновом режиме. Я запустил JProfiler, затем в разделе Live Memory пометил текущие объекты, нажав кнопку Mark current. Глядя на столбец Difference, создаются сотни объектов (char, HashMap, LinkedHashSet и т. Д.).

Есть ли в JProfiler функция, которая позволяет мне видеть, были ли объекты выделены из одного из моих классов (например, объекты типа A выделены из классов с шаблоном com.example.mypackage.*)?

Это было бы полезно, если бы я вызвал утечку памяти или я должен заполнить отчет об ошибке кому-то еще.

Я открыт для любого другого предложения профилировщика, предоставляющего такую ​​функцию.

1 Ответ

0 голосов
/ 06 ноября 2018

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

Затем перейдите к «Живая память-> Дерево вызовов распределения» и запишите распределения. В дереве вызовов вы можете увидеть накопленные стеки вызовов с информацией о распределениях. Вызовите «Просмотр-> Анализ-> Показать классы» в главном меню, чтобы показать конкретные выделенные классы для каждого узла. Вы также можете выбрать определенный класс или пакет и показать дерево размещения выборочно.

Существует связанное представление «Горячие точки распределения», которое показывает стеки вызовов с большинством распределений. Если вы просто хотите увидеть свои собственные классы, выберите «Добавить в вызывающий класс» в меню «Опции горячих точек» в правом верхнем углу.

...