Статический класс против экземпляра: Если вы объявляете внутренний класс как статический, то экземпляры внутреннего класса не имеют никакой ссылки на внешний класс. Если это не сатика, тогда ваш внутренний объект эффективно указывает на внешний объект, который его создал (фактически он имеет неявную ссылку, если вы используете отражение над его конструкторами, вы увидите дополнительный параметр для получения внешнего экземпляра). *
Внутренний экземпляр указывает на внешний экземпляр: Циркулярная ссылка на случай, если каждый экземпляр указывает на другой. Часто вы используете внутренние классы для элегантной реализации некоторого интерфейса и доступа к закрытым полям, не реализуя интерфейс с внешним классом. Это означает, что внутренний экземпляр указывает на внешний экземпляр, но не означает обратное. Не обязательно круговая ссылка.
Закрытие круга: В любом случае, нет ничего плохого в круговых ссылках в Java. Объекты работают хорошо, и когда на них больше нет ссылок, они собирают мусор. Не имеет значения, указывают ли они друг на друга.