Sun.java2d.loops.ProcessPath $ Point

Я внезапно профилирую приложение, используя много памяти, и получаю следующее:

sun.java2d.loops.ProcessPath $ Point

Как было выделено почти 11.000.000 раз.

Что это такое и есть ли решение?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
150
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Моим первым ответом был бы вопрос, действительно ли при этом используется много циклов памяти / процессора? Пакеты sun. являются внутренними реализациями Sun JVM, поэтому они, скорее всего, будут низкоуровневыми деталями того, что делает ваш код. Если эти объекты занимают большой объем памяти, это может быть проблемой, но простое отображение 11 миллионов распределений не означает, что что-то необычное.

Редактировать: небольшой поиск в Google показывает, что это объект, используемый для кодирования ссылки на конкретную точку на 2D-плоскости. Скорее всего, если вы делаете что-то, что связано с графикой, тогда да, вы бы сгенерировали большое их количество. Кроме того, каждый из них хранит только два целых числа (координаты x и y) и логическое значение, поэтому они будут очень маленькими объектами в общей схеме вещей. Даже если ни одно из этих 11 миллионов распределений не было собрано мусором (и я ожидаю, что большинство из них будут локальными переменными, поэтому они будут быстро собраны), они не будут учитывать большую часть кучи, если вы не работает на устройствах с крошечным объемом оперативной памяти.

Другими словами, ищите свою проблему в другом месте. Вероятно, было бы более полезно посмотреть на объекты, которые занимают большой объем текущего пространства кучи, или даже посмотреть количество объектов, на которые в настоящее время ссылаются, чтобы найти вашу утечку. Прочтите документы, содержащие рекомендации о том, как находить и устранять утечки памяти с помощью выбранных вами инструментов. Глядя на общие распределения редко бывает так полезно, если вы не знаете для данного класса, сколько их должно быть (например, может быть полезно проверить, что синглтоны создаются только один раз, например).

Решил проблему с памятью. Я делал неприятные ссылки, обрабатывая некоторые места в моем коде.

Другие вопросы по теме