У меня был похожий случай, и хотя вопрос мог бы быть сформулирован лучше, он помог мне, потому что Hovercraft [^ s] +? S дал хороший намек (рекурсия).
Такая проблема, вероятно, не может быть изолирована простым кодом. По крайней мере, в моем случае это происходило в сложном приложении с большим количеством вложенных компонентов Swing, включая JInternalFrames, завернутые в проприетарные классы и т. Д.
В нашем случае, еще не полностью решенном, у нас было плохое управление слушателями мыши (для каждого компонента панели было добавлено множество для обработки одного и того же контекстного меню вместо более глобального управления), и слушатели были добавлены и удалены в зависимости от пользовательских операций.
Во всяком случае, я подозреваю, что где-то мы добавляем много слушателей (действительно много!), Не удаляя их должным образом. В обычных операциях нам не нужно их удалять, это делается автоматически при удалении компонента, но здесь слушатели добавляются и добавляются без удаления компонента. А переполнение стека, вероятно, просто итерация в очень глубоком стеке ...
Я работаю над анализом кода, чтобы избежать всех этих бесполезных добавлений слушателя (возможно, обнаружение, если он есть, перед его добавлением?). Как бы то ни было, приведенный выше анализ может быть полезен для кого-то с подобным случаем, я раскрываю его там.