Как использовать: Инструмент анализатора памяти: объединить кратчайший путь к корням GC: исключить настраиваемое поле?

Тем не менее, я не могу понять, что положить в-исключает. Я попытался добавить все четыре ниже, и я все еще вижу ссылку, которую я не хочу от ClassName.nameOfFieldInClass!

  1. org.package.ClassName
  2. org.package.ClassName: референт
  3. org.package.ClassName: nameOfFieldInClass
  4. ИмяКласса: nameOfFieldInClass

и он по-прежнему отображает ссылки, которые я не хочу видеть! Документация не очень помогает из всплывающего окна: "Поля определенных классов, которые следует игнорировать при поиске путей. Например, это позволяет игнорировать пути через ссылки со слабой или мягкой ссылкой".

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

Что я положил в-исключает?

Просматривая исходный код openjdk, я вижу, что и WeakReference, и Soft Reference имеют частное поле референта. В результате, -exclude должно быть (fullClassName):(variableName). Теперь мне просто нужно выяснить, почему это не работает в моей куче. Может быть, соглашение отличается для статического поля?

1 ответ

Ах, это расстраивает. Это работало, когда у меня было только (обратите внимание, нет поля / переменной):

  1. java.lang.ref.WeakReference: референт
  2. java.lang.ref.SoftReference: референт
  3. org.my.ClassName

Однако, когда я использовал приведенные ниже исключения, я получил как-то БОЛЬШЕ результатов, хотя запрос был более строгим!

  1. java.lang.ref.WeakReference: референт
  2. java.lang.ref.SoftReference: референт
  3. org.my.ClassName
  4. org.my.ClassName2
Другие вопросы по тегам