java - Spring Controller 不被视为单例

标签 java spring spring-boot

我们一直在诊断 Spring Boot 应用程序中明显的内存泄漏。我们无法在代码中找到任何突出的内容,但是使用 VisualVM 的内存分析器,我们发现了一些奇怪的东西。当 Controller 受到请求时,将创建该 Controller 的新实例。如下所示,这些 Controller 应该是单例的。此外,这些多余的实例永远不会被垃圾收集并不断堆积。这些 Controller 在代码中的任何地方都没有引用,并且仅由 Spring 魔法首先创建的任何内容创建。

所以我的问题是:什么会导致像这样的 Spring 组件开始出现这样的行为,以及我将如何调试它?

以下是类的注释。

@Slf4j
@Validated
@RestController
@RequestMapping("profile")
public class ProfileController {
    ...
}

最佳答案

问题是间歇性的。重新启动运行它的计算机后,问题消失了。

对于那些想知道的人来说,问题的根源在于线程泄漏。

关于java - Spring Controller 不被视为单例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60213710/

相关文章:

java - ImageIO 读取的 RGB 值与其他方法略有不同

java - 使用剪贴板时 KeyListener 中的奇怪行为

java - Spring MVC 请求映射 - 完整请求 URI

java - 无法应用插件 [id 'spring-boot']

java - 每个流程实例的唯一日志文件

java - 如何使用 JAVA High Level Rest Client 获取索引中存在的文档总数

java - 使用 AspectJ LTW 时的 Spring 缓存问题

java - 应用程序作为全局变量

java - 无法在 Spring Boot 中禁用 CSRF 安全性

mysql - Tomcat 在每次启动时创建新的数据库 session + mysql