Мы диагностировали явную утечку памяти в приложении Spring Boot. Мы не смогли найти ничего, что выделялось в нашем коде, но с помощью профилировщика памяти VisualVM мы обнаружили что-то странное. Когда запрос контролируется контроллером, создается новый экземпляр этого контроллера. Как указано ниже, эти контроллеры должны быть синглетонами. Кроме того, эти лишние экземпляры никогда не собираются мусором и продолжают накапливаться. На эти контроллеры нигде в коде нет ссылок, и они создаются только тем, что Spring magi c создает в первую очередь.
Поэтому мой вопрос: что может вызвать запуск компонента Spring, подобного этому? и как мне потенциально go отладить его?
Ниже приведены аннотации класса.
@Slf4j
@Validated
@RestController
@RequestMapping("profile")
public class ProfileController {
...
}