Как использовать: Инструмент анализатора памяти: объединить кратчайший путь к корням GC: исключить настраиваемое поле?
Тем не менее, я не могу понять, что положить в-исключает. Я попытался добавить все четыре ниже, и я все еще вижу ссылку, которую я не хочу от ClassName.nameOfFieldInClass!
- org.package.ClassName
- org.package.ClassName: референт
- org.package.ClassName: nameOfFieldInClass
- ИмяКласса: nameOfFieldInClass
и он по-прежнему отображает ссылки, которые я не хочу видеть! Документация не очень помогает из всплывающего окна: "Поля определенных классов, которые следует игнорировать при поиске путей. Например, это позволяет игнорировать пути через ссылки со слабой или мягкой ссылкой".
Онлайновая документация еще хуже "- исключая поля некоторых классов, которые следует игнорировать при поиске путей. Например, это позволяет игнорировать пути через ссылки на слабые или мягкие ссылки".
Что я положил в-исключает?
Просматривая исходный код openjdk, я вижу, что и WeakReference, и Soft Reference имеют частное поле референта. В результате, -exclude должно быть (fullClassName):(variableName). Теперь мне просто нужно выяснить, почему это не работает в моей куче. Может быть, соглашение отличается для статического поля?
1 ответ
Ах, это расстраивает. Это работало, когда у меня было только (обратите внимание, нет поля / переменной):
- java.lang.ref.WeakReference: референт
- java.lang.ref.SoftReference: референт
- org.my.ClassName
Однако, когда я использовал приведенные ниже исключения, я получил как-то БОЛЬШЕ результатов, хотя запрос был более строгим!
- java.lang.ref.WeakReference: референт
- java.lang.ref.SoftReference: референт
- org.my.ClassName
- org.my.ClassName2