Скорее всего, у вас есть утечка, вызванная неправильным поведением вашего приложения.Это довольно распространенная проблема на самом деле.
Основная проблема заключается не в увеличении количества экземпляров вашего синглтона, а в увеличении количества загрузчиков классов и, следовательно, количества загруженных классов (которые могут быть в итоге огромными).Вы можете легко доказать это с помощью дампов javacore.
Чтобы решить эту проблему, вы должны найти объект, препятствующий сбросу каждого из этих загрузчиков классов, и, следовательно, все загруженные классы.
Один хорошо известныйПримером такого неправильного поведения приложения EE является использование log4j с включенными перехватчиками завершения работы (по умолчанию включено).
ОБНОВЛЕНИЕ
Просто для подтверждения, объект со статической ссылкой в данном примере не мог вызвать упомянутые загрузчики классов / собственную утечку памяти.Более того, поскольку статическое поле объявлено как final - оно соответствует спецификации EJB.
Как упоминалось в TS, основным подозрением является пул соединений, который нарушает спецификацию EJB, выполняя собственные потоки.
Типичная причина таких утечек - использование многопоточности в среде EE, особенно вместе с контекстными загрузчиками классов.